10-08-2005, 20:24
|
|
|
|
חבר מתאריך: 13.12.02
הודעות: 147
|
|
PL\SQL
מרבית הסיכויים שמדובר ב PL\SQL
PL\SQL היא שפה פרוצדוראלית (ניתן לחלק את הקוד לפרוצדורות ופונקציות) ויש בה אלמנטים אשר משותפים לרוב שפות התכנות (לולאות, תנאים וכו') ולכן מאפשרת כתיבת bussiness logic ממש ולא סתם שליפות.
הקוד עצמו לא מקומפל לקובץ ריצה אלא נשמר בתוך טבלאות ומורץ על השרת עצמו.
בצורה כזו ניתן לקבל יעילות מקסימאלית בעיבודי מידע - העיבוד מבוצע במקום שבו נמצא המידע ואין צורך בגישה מבחוץ לבסיס הנתונים (למעשה הגישה היחידה תהיה כדי לקרוא לפונקציה).
כמובן שהשפה מכילה חוץ מפקודות if,loop וכו' גם פקודות לשליפת ושינוי המידע בבסיס הנתונים אשר רובן נלקחות מ sql.
דוגמא לשימוש-
יש לי אפליקציה שבה יש רשומות של לקוחות.
ישנו כפתור 'שכפל לקוח' אשר אמור ליצור עותק מושלם של הלקוח (כולל מידע בכל מיני טבלאות).
אני אצור בבסיס הנתונים פרוצדורה (נקרא stored procedure - פרוצדורה אשר מאוכסנת בבסיס הנתונים) אשר מקבלת מספר לקוח ומשכפלת את כל המידע הרלוונטי בכל הטבלאות הרלוונטיות (כולל תוספת 'עותק של ' לכל השמות בטבלאות).
באפליקציה עצמה לחיצה על הכפתור תיקרא לפרוצדורה שיצרתי ותעביר לה את מספר הלקוח.
כל העיבודים על המידע יבוצעו בבסיס הנתונים - ללא צורך בכתיבת הקוד בצד האפליקציה וללא קריאות מיותרות לבסיס הנתונים.
אם אני רוצה אני יכול ליצור במקום הפרוצדורה פונקציה שתבצע את התהליך ותחזיר בסופו את מספר הלקוח החדש שנוצר.
דוגמת קוד קטנה -
ב sql ניתן לשלוף מידע אבל לא ניתן להשתמש בו אח"כ:
קוד:
SELECT emp_name
FROM emp
WHERE emp_id = 1;
חייבים להכניס את הערך המוחזר למשתנה ואח"כ ניתן להשתמש בו בקוד PL\SQL לעומת זאת ב
קוד:
DECLARE
v_emp_name emp.emp_name%type;
BEGIN
SELECT emp_name
INTO v_emp_name
FROM emp
WHERE emp_id = 1;
...
...
IF (v_emp_name = 'Michael') THEN
...
...
END IF;
END;
|