פרוצדורה מאוחסנת

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

פְרוצֵדורַ‏ה מאוחסנתאנגלית: Stored Procedures) היא שיטת כתיבה של שאילתות SQL המאוחסנות בשרת של בסיס הנתונים. כמו בפרוצדורה רגילה, הפרוצדורה המאוחסנת כוללת קוד של התחלה, קוד של סיום, פרמטרים וגוף הפרוצדורה שבו נכתבות הפעולות המתבצעות בפרוצדורה.

הפרוצדורה המאוחסנת נכתבת בשפת SQL, שהשימוש בה נעשה בכל פעולה שנוגעת למסד הנתונים.

השימוש פְרוצֵדורַ‏ה מאוחסנת שימושי במקרים הבאים:

  • במידה שרוצים לכתוב תוכנית שתשמש למספר אפליקציות, ניתן לשמור אותה בצד השרת. זה מוריד כפילויות ומשפר גמישות בקוד
  • הרצת פרוצדורה בשרת מפחיתה את תעבורת המידע בין השרת לאפליקציה
  • ניתן להשתמש בפרוצדורות לבדיקות נכונות הנתונים integrity constraints, לטיפול בשגיאות, למניפולציה על הנתונים ולטעינת נתונים

ה-syntax ליצירת פרוצדורה הוא:

CREATE PROCEDURE <procedure name> (<parameters>)
<local declarations>
<procedure body>;

דוגמה לפרוצדורה מאוחסנת:

CREATE PROCEDURE sp_GetInventory
@location varchar(10)
AS
SELECT Product, Quantity
FROM Inventory
WHERE Warehouse = @location

דוגמה לקריאה לפרוצדורה מאוחסנת:

CALL <procedure or function name> (<argument list>)


פְרוצֵדורַ‏ה מאוחסנת היא חלק משפת ה-SQL הסטנדרטי ומרחיבה את שפת ה-SQL של בסיס הנתונים.

תנאים ולולאות:

IF

IF <condition> THEN <statement list>
ELSEIF <condition> THEN <statement list>
ELSE <statement list>
END IF;

WHILE

WHILE <condition> DO
<statement list>
END WHILE;

FOR

FOR <loop name> AS <cursor name> CURSOR FOR <query> DO
<statement list>
END FOR;

נכון להיום כמעט כל בסיס נתונים רלציוני מאפשר כתיבת פְרוצֵדורַ‏ה מאוחסנת אולם בכל בסיס נתונים שפת התיכנות שונה, חלק משפת ה-SQL הסטנדרטי
בגרסאות החדשות של בסיסי נתונים ניתן להריץ פְרוצֵדורַ‏ה מאוחסנת גם על סמארטפון ובעיקר על גירסת Android.

ישנם מספר גרסאות חדשות שיצאו לאחרונה בבסיסי נתונים שאינם רלציונים (NoSql) ובמספר קטן של בסיסי נתונים גדולים (Big Data) שניתן לכתוב גם פרוצדורת מאוחסנות.

הממציא השבדי "ווריאל וורר" טוען ששפות פרוצדורליות חוזרות לחיינו ומועדפות על פני שפות דור 3 ו-4 מכיוון שהם פשוטות יותר ומכוונות מטרה (לא רלוונטי לקוד מורכב אלא לקוד ספציפי למטרה מסוימת ופשוטה)