פרוצדורה מאוחסנת
פְּרוֹצֵדוּרָה מאוחסנת (באנגלית: Stored Procedure) היא שיטת כתיבה של שאילתות SQL המאוחסנות בשרת של בסיס הנתונים. כמו בפרוצדורה רגילה, הפרוצדורה המאוחסנת כוללת קוד של התחלה, קוד של סיום, פרמטרים וגוף הפרוצדורה, שבו נכתבות הפעולות המתבצעות בפרוצדורה.
הפרוצדורה המאוחסנת נכתבת בשפת SQL, שהשימוש בה נעשה בכל פעולה שנוגעת למסד הנתונים.
השימוש בפרוצדורה מאוחסנת מתאים במקרים הבאים:
- אם רוצים לכתוב תוכנית שתשמש למספר יישומים, ניתן לשמור אותה בצד השרת. זה מוריד כפילויות ומשפר גמישות בקוד.
- הרצת פרוצדורה בשרת מפחיתה את תעבורת המידע בין השרת לאפליקציה.
- ניתן להשתמש בפרוצדורות לבדיקות נכונות הנתונים integrity constraints, לטיפול בשגיאות, למניפולציה על הנתונים ולטעינת נתונים.
התחביר ליצירת פרוצדורה הוא:
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;
נכון להיום כמעט כל בסיס נתונים רלציוני מאפשר כתיבת פרוצדורה מאוחסנת, אולם בסיסי נתונים שונים תומכים בשפות תכנות שונות.
ישנן מספר גרסאות חדשות שיצאו לאחרונה בבסיסי נתונים שאינם רלציונים (NoSQL) ומספר קטן של בסיסי נתונים גדולים (Big Data), שניתן לכתוב בהם פרוצדורת מאוחסנות.