SQL User Defined Stored Procedures או פרוצדורות מאוחסנות, הן כלי עוצמתי אשר יש לרשותנו ב-SQL ונוכל להשתמש בו על מנת לבצע מגוון של אופרציות שמורות מראש.
פרוצדורה מאוחסנת יכולה להכיל ביטוי או ביטויי SQL שונים.
כלומר שנוכל להשתמש בפרוצדורה על מנת לבצע את כל פעולות ה-C.R.U.D על מסד הנתונים ועוד.
עד כאן, זה נשמע שפרוצדורה דומה לפונקציה, איך קיימים הבדלים ביניהם, אלו הם העיקריים:
SQL Functions vs Procedures
התחביר הבסיסי ליצירת פרוצדורה יראה כך:
CREATE PROCEDURE procedure_name (parameters) AS BEGIN SQL statements END
יצירת פרוצדורה מאוחסנת
ניקח מצב שבו היינו צריכים שתהיה קיימת פרוצדורה במערכת שלנו,
שבכל פעם שנקרא לה היא תחזיר לנו תוצאות שאילתה מוגדרת מראש.
לשם ההדגמה נשתמש באותם הטבלאות של הדוגמאות הקודמות:
Student
StudentCourse
את הפרוצדורה שלנו נוכל ליצור כך שתקבל מספר כפרמטר.
בדומה לפונקציה, נוכל גם כאן להשתמש לאחר מכן בפרמטר בתוך הפונקציה שלנו
הפרמטר שהפונקציה תקבל יהיה מסוג INT וניתן לו את השם myInt.
שימו לב כי שם המשתנה תמיד צריך להתחיל בשטרודל – @.
CREATE PROCEDURE returnCourseStudents (@myInt INT) AS BEGIN SELECT CourseId, CourseName, StudentId FROM StudentCourse WHERE @myInt = CourseId END
לאחר מכן נוכל לקרוא לפרוצדורה על ידי שימוש ב-EXEC:
EXEC returnCourseStudents 2
בדוגמא זו, השתמשנו בפרוצדורה מאוחסנת אשר תפקידה להחזיר לנו טבלה שמראה לנו כמה תלמידים רשומים לקורס מסוים לפי מספר הקורס (ה-CourseId).
שימו לב כי בניגוד לפונקציה, לא היינו צריכים להשתמש בסוגריים על מנת לתחום את המספר שאנו שולחים כפרמטר לפרוצדורה.
ובדומה לקריאה לפונקציה, גם כאן ה-SSMS יסמן לנו את שם הפרוצדורה כלא תקין.
אך אם נתעלם ונריץ את הקוד – הוא ירוץ ללא שום בעיה:
סיכום
לסיכום ניתן לומר כי פרוצדורות מאוחסנות הן כלי יעיל אשר יכול לחסוך לנו בקוד ולהקל עלינו בעבודה מול מסד הנתונים שלנו.
בניגוד לפונקציות, לא חייב להיות להם סוג החזר, וניתן להשתמש בהם על מנת לבצע מגוון של פעולות שפונקציות לא מאפשרות לנו.
לקריאה מורחבת על פרוצדורות מאוחסנות באתר של מייקרוסופט יש ללחוץ כאן