כיצד ליצור נהלים מאוחסנים ב-PostgreSQL

Kyzd Lyzwr Nhlym M Whsnym B Postgresql



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

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

עבודה עם פרוצדורות מאוחסנות ב-PostgreSQL

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







להלן התחביר הבסיסי ליצירת פרוצדורה מאוחסנת ב-PostgreSQL:



CREATE OR REPLACE PROCEDURE procedure_name(

parameter[s] data_type

)

LANGUAGE plpsql;

כ-$$

לְהַכרִיז

variables_if_any data_type

התחל

הִגָיוֹן

סוֹף;

$$

הדברים העיקריים שיש לשים לב אליהם מהתחביר הנתון הם 'שם_הליך' שהוא השם שבו תשתמש עבור ההליך המאוחסן, הפרמטרים שברצונך לכלול וסוגי הנתונים שלהם, והלוגיקה שהם בעיקר הצהרות SQL.



בוא ניתן שלוש דוגמאות שיעזרו לך להבין כיצד ליצור את הפרוצדורות המאוחסנות ב-PostgreSQL.





דוגמה 1: הליך מאוחסן לחישוב הריבוע של מספר

עבור הדוגמה הראשונה שלנו, אנו יוצרים פרוצדורה מאוחסנת המשתמשת במשפט 'RAISE NOTICE' כדרך להדפיס את הפלט למסוף. ההליך המאוחסן לוקח את הערך השלם שאתה נותן לו כשקוראים לו ומחשב את הריבוע שלו.

כך אנו יוצרים את ההליך המאוחסן:



אנו קוראים לפרמטר שלנו בשם 'num1', וזה מספר שלם. עבור החלק הלוגי, אנו מגדירים כיצד הוא מקבל את הריבוע של 'num1' ומאחסן אותו כמשתנה הריבועי. כאשר אנו מבצעים את הפקודה, אנו מקבלים את הפלט 'CREATE PROCEDURE' אשר מאשר שהצלחנו ליצור את הפרוצדורה המאוחסנת בהצלחה.

המשימה הבאה היא לקרוא לנוהל ולתת לו את הטיעון הצפוי.

CALL procedure_name(טיעונים);

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

דוגמה 2: הליך מאוחסן להכנסת הערכים לערך טבלה

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

עבור דוגמה זו, אנו יוצרים פרוצדורה מאוחסנת המאפשרת למשתמש להכניס את הערכים לטבלה החדשה שנוצרה. שימו לב כיצד אנו מציינים את הפרמטרים שאנו מצפים שיתווספו כארגומנטים כאשר אנו קוראים לפרוצדורה המאוחסנת. יתרה מכך, אנו מגדירים את ההיגיון שלוקח את הארגומנטים שנוספו ומבצע משפט INSERT SQL לטבלת 'סטודנטים'.

אנו יכולים לבדוק את ההליכים המאוחסנים הזמינים על ידי הפעלת הפקודה הבאה:

\df

ההליך המאוחסן הראשון שאנו יכולים לראות מהפלט הבא הוא 'add_student' שיצרנו בעבר.

כעת, בואו נקרא לנוהל המאוחסן כדי לבצע אותו. התמונה הבאה מראה איך יש לנו טבלה ריקה, אבל קראנו לנוהל המאוחסן כדי להוסיף את התלמיד הראשון:

אם נרשום את הערכים בטבלה שלנו, שימו לב כיצד הארגומנטים שהוספנו עם פקודת ה-call הם הערכים של התלמיד הראשון שלנו בטבלה שלנו. כך אתה יוצר פרוצדורה מאוחסנת להכנסת הערכים לטבלה.

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

דוגמה 3: נוהל מאוחסן לעדכון ערך טבלה

ממשיכים הלאה, בואו ניצור הליך מאוחסן אחר שמעדכן ערך בטבלה. אם ברצונך לקבל דרך מהירה לעדכן את הערכים בטבלה שלנו, תוכל ליצור נוהל עדכון מאוחסן באופן הבא:

ציין איזו עמודה ברצונך לעדכן באמצעות מילת המפתח WHERE והערך החדש באמצעות מילת המפתח SET. לאחר מכן עליך להוסיף את מילת המפתח COMMIT כדי להמשיך את השינויים.

בואו נקרא לפרוצדורה המאוחסנת של העדכון ונוסיף את הארגומנטים הצפויים: 'תלמיד_id' והקורס החדש.

אם נרשום את הערכים בטבלה שלנו, נוכל לוודא שיש לנו את הקורס המעודכן עבור התלמיד המסוים שאליו התמקדנו. כך עובד נוהל מאוחסן עדכון.

סיכום

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