יצירת SP ב-ACCESS
רובנו שומעים מידי יום את המונח SP (stored procedure) כשלמישהו יש שאלה על איך לייעל את העבודה מול מסד הנתונים או שהוא עובד על MSSQL והוא נתקל בבעיה ומזכיר את המונח הזה.
מכאן אנו מבינים שיצירת SP היא חלק בלתי נפרד מה-MSSQL אבל למזלנו (משתמשי ACCESS 🙂 אפשר ליצור מופעי SP גם ב-access.
בוא נתחיל בהגדרת המונח SP
Stored procedure (SP) – קבוצה נרחבת של הצהרות SQL (ב- access זה jet SQL) המקומפלות בשרת וניתן לתפעל אותן ע"י הצהרת SQL אחת (execute). אפשר להשפיע על קבוצת הצהרות ה-SQL ע"י משתנים(פרמטרים) הנשלחים כחלק מה-SP.
ישנם שני דרכים ליצירת SP ב-ACCESS :
- תחביר TSQL המופעל דרך אלמנט ה-text area (ב-HTML) ושיטת ה-execute של אובייקט הקונקשיין, ואז ה-access מתרגם לשפה שלו jet sql
- תחביר jet sql פשוט הנוצר ישירות באקסס
עכשיו ניכנס לחלק של יצירת שאילתות (שאילתות,query בתפריט של אקסס) ואז ניכנס ליצירת שאילתא בתצוגת עיצוב ונבחר על מצב SQL
פסוקית PARAMETERS
כמו שמה תפקידה להגדיר את הפרמטרים (משתנים) שישלחו לשאילתא המתקבלת.וזה התחביר שלה:
|
|
- Name – שם המשתנה
- DataType – סוג המשתנה (אותם סוגי הנתונים המשמשים ליצירת טבלה באקסס)
|
|
אחרי פסוקית הפרמטר עלינו להכניס סוג מסוים של שאילתא באם זה : שליפה, הכנסה, שדרוג(update), מחיקה (וכל סוג מסוים של שאילתא הנתמכת ב-access) בשאילתא שאנו מכניסים אנו יכולים להשתמש במשתנים שיצרנו בפסוקית ה-PARAMETERS .
חשוב מאוד – לא לתת לפרמטרים שמות זהית לשדות בטבלה.
לדוגמא: נגיד יש לנו טבלת בשם pictures בטבלה זו יש שלושה עמודות: id, title ו-link
Id – מספור אוטומטי
Title, link – טקסט
ואנו רוצים לשלוף את הקישור לתמונה (עמודת LINK) רק איפה שהמשתנה picID (שיצרנו בדוגמא קודם) שווה לשדה בעמודה ID ולכן כך תיראה השאילתא שלנו 1
2 PARAMETERS picID int;
SELECT link FROM pictures WHERE id=[picID]
אנו יכולים להשתמש במשתנים שהגדרנו בפסוקית parameters רק בפסוקיות ה-WHERE ו-HAVING. לעומת ה-SQL SERVER שבו אפשר להשתמש בהם בכל מקום (אבל על זה אני לא ארחיב).
לאחר שכתבנו את ה-SP באקסס עלינו לשמור את הקובץ כדי שלא ניתקל בעת השמירה שלנו במלים שמורות נקרא ל-SP שלנו כך: spPicture (שימו לב לקידומת)
כדי לקרוא ל-SP עלינו לכתוב משפט SQL המשתמש בהצהרת EXECUTE ואחרי שם ה-SP והמשתנים.
זה התחביר של הצהרה זו 1 EXECUTE sp_name [name1=<val>, [name2=<val>]]
(הערכים הנמצאים בסוגריים המסולסלות הם אופציונליים)
ואפשר גם כך: 1 EXECUTE sp_name [name1[, name2]]
(הערכים הנמצאים במשתנים ע"פ הסדר בו הוגדרו ב-SP)
חשוב מאוד לשמור על הגדרות סוגי המשתנים ז"א משתנים מסוג תאריך יש לעטוף ב-#, משתנים טקסטואליים יש לעטוף בגרשים ומשתנים מספריים לא צריך לעטוף כלל.
וכדי להשלים את הדוגמא נכתוב את הצהרת ה-EXECUTE המתאימה ל-SP שלנו 1
2
3 EXECUTE spPicture picID=1;
–or
EXECUTE spPicture 1;
וזו הדוגמא הסופית:
spPicture – יצירת ה-SP בתוך אקסס 1
2 PARAMETERS picID int;
SELECT link FROM pictures WHERE id=[ picID];
קוד ה-ASP: 1
2
3
4 <%
strSQL = "EXECUTE spPicture picID=1"
objConn.Open strSQL;
%>
תכנות נעים
תגובות בפייסבוק