
Create Procedure ProductsByCategory @CategoryID int As Select * From Products Where CategoryID = @CategoryID. משתנה מתחיל ב-@, וחשוב לסיים ב-go כדי שפקודות אחרות לא ייכנסו לגוף הפרוצדורה.Exec ProductsByCategory 2 (בלי סוגריים). אפליקציה יכולה להריץ אותה ולקבל את הטבלה, בלי לשלוח את השאילתה.Exec ולהבין מתי כדאי לבחור בה במקום view או שאילתה מהאפליקציה.הטקסט המלא של הדקות הראשונות בהרצאה «יצירה של Stored Procedures ב-SQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הבא שאנחנו הולכים לראות טיפה מתקדם אבל חשוב חשוב לראות את זה ולראות דוגמה של הדבר הזה וזה Stored Procedures. Stored Procedure בעברית שגרות מאוחסנות שזה מונח שלא משתמשים איתו בעברית רק Stored Procedures באנגלית קוראים לזה.
זה בעצם קטע קוד שאנחנו כותבים כמו פונקציה ששתולה בתוך הדאטאבייס אבל לא הייתי משתמש בשם פונקציה מפני שיש משהו בנפרד שנקרא Functions. עזבו את המונח פונקציה, משתמשים במונח stored procedure, קטע קוד שאנחנו שומרים בתוך הדאטאבייס ויכולים להריץ אותו בנפרד, לתת לו הוראה,
אתה רץ. זה דומה לפונקציה בתכנות. מה ההבדל בין זה לדוגמה לבין view? גם view זה איזשהו קטע קוד ששמרנו. view, כמו שראינו, זה שאילתת סלקט שאנחנו שומרים בתוך הדאטאבייס ויכולים להשתמש בו כאילו שהוא טבלה.
סטורט פרוסיג'ר זה משהו קצת אחר. קודם כל אפשר לכתוב קוד שהוא לא רק שאילתא צלקט. אפשר לעשות אינסרט, אפטייט, דיליט, אפשר לעשות כמה שאילתות צלקט, אפשר לעשות דברים מאוד מורכבים בתוך סטורט פרוסיג'ר.
אפשר לשלוח ארגומנטים בדומה לפונקציה של פיתוח תוכנה. אפשר לשלוח ארגומנטים ולהגיד לו הנה בוא תשתמש עם מידע בשביל לבצע את הפעולה שאתה צריך.
סטורט פרסיג'ר שמוסיפה מוצר חדש ואני רק שולח כמה ערכים והוא מוסיף לי את המוצר. אחד הדברים הכי חשובים, Vue זה שאילתא ששמורה, אנחנו נותנים לה שם, אבל ברגע שאנחנו משתמשים ב-Vue, המערכת פשוט עושה קופי פייסט לשאילתא ומריצה אותה כאילו שאנחנו כתבנו אותה מחדש.
סטורט פרוסיג'ר לעומת זאת, המערכת מקמפלת אותה לקוד מכונה ושומרת בדאטאבייס. זה אומר שההרצה של סטורט פרוסידג'ר הוא הרבה הרבה יותר מהיר מכל דבר אחר.
גם משאילתות שתוכנה שולחת אלינו. אם תוכנה שולחת שאילתת sql לדאטאבייס, הדאטאבייס צריך לקחת את השאילתה, להבין מה צריך לעשות, לקמפל אותה לקוד מכונה ולהריץ אותה.
הקמפול לוקח זמן. סטורט פרוסידג'ר כבר מקומפלת ושמורה בתוך הדאטאבייס כקוד שמסוגל כבר לרוץ, בלי הצורך בקומפילציה הזאת בשלב הזה. בואו נייצר לעצמנו איזשהו סטורט פרוסיג'ר מאוד מאוד פשוטה, קריאייט פרוסיג'ר זה הפקודה.
בואו נניח שאנחנו רוצים להביא פרודקטס ביי קטגורי. זאת אומרת, הנה סטורט פרוסיג'ר, תנו לי בבקשה קוד של קטגוריה פה לסוגריים, זאת אומרת שאתם צריכים לתת לי משתנה.
כל משתנה מתחיל בשטרודל, זה מאסט. בואו נקרא לו reid והסוג שלו זה int ככה אנחנו בונים את זה שם של משתנה ואז הסוג רושמים as ואז מה הקוד שיכול להיות פרוס פה על הרבה שורות קוד שימו לב זה שייך להרחבה של שפת sql ובהרחבה של שפת sql כל דאטאבייס יכול להכיל את המידע בצורה קצת אחרת כלומר התחבירים יכולים להיות קצת אחרים ההרחבה של שפת sql עבור
sql server נקראת tsql כלומר transact sql זה בעצם מעין שפת הרחבה כזאת לשפת sql שכוללת אפשרות לייצר stored procedure אפשרות לייצר functions אפשרות לייצר משתנים תנאים לולאות יש פה המון דברים שאפשר לעשות פה זה ממש שפת תכנות אז אנחנו יכולים לכתוב פה המון קוד שבעצם מבצע כל מיני פעולות הדרושות על ידי stored procedure הרבה פעמים סטורט פרסידג'ר הוא משהו שהוא די
נרחב מבחינת קוד, מכיל הרבה שורות קוד. למרות שהסטורט פרסידג'ר שלנו מאוד מאוד פשוטה. כל מה שאנחנו רוצים לעשות זה פקודת סלאק. בוא נניח all from product where categoryid שווה לפרמטר strudel categoryid ששלחו לי לפונקציה.
חשוב חשוב חשוב go, כי אם בטעות תהיה פה עוד איזושהי פקודה ואנחנו נריץ הכל, אז המערכת תכניס את הפקודה הזאת גם לתוך ה-Stored Procedure.
Good, אנחנו נמצאים בנורף ווינד,