
NULL. מי שלא שולח ערך לא מעדכן את העמודה.LastName = ISNULL(@LastName, LastName). אם הפרמטר ריק מחזירים את הערך הקיים בעמודה, ואם יש ערך מחזירים אותו.@LastName NVARCHAR(40) = NULLUPDATE Employees SET LastName = ISNULL(@LastName, LastName) WHERE EmployeeID = @EmployeeIDEXEC employees @EmployeeID = 1, @FirstName = N'דוד'NULL, הפרמטר יהיה חובה ויחייב את הקורא לשלוח את כל הערכים.הטקסט המלא של הדקות הראשונות בהרצאה «איך לכתוב נכון Stored Procedure» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, ברוכים הבאים להרצאה איך לכתוב נכון פרוצדורה. זאת המלצה, אבל המלצה מאוד חזקה. זה חבר'ה תותחים, הראו לי את הטריקים האלו, ואני רוצה לחלוק את הטריקים האלו איתכם.
אז תחשבו שיש לי פה נניח טבלה כלשהי, employees, שיש בה פה הרבה עמודות כמו שאתם יכולים לראות, ואני רוצה שתהיה לי אפשרות לשנות את כל העמודות האלו דרך סטורט פרוציג'ר.
למה דרך סטורט פרוציג'ר? כי תחשבו שאתר האינטרנט שלי צריך לשלוח פקודה לשינוי עמודה. פעם זאת, פעם זאת, פעם הזאת.
איך אני אשנה כל פעם עמודה אחרת על ידי פרוצדורה אחת בצורה יפה, בלי לשלוח שם של עמודה כסטרינג או כל מיני דברים כאלו, אוקיי?
איך כל פעם לשנות עמודה אחרת בפרוצדורה אחת? אז בואו תראו את הטריק. אני עושה סטורט פרוצדג'ר חדש וקורא לו נניח בשם employees, לקבוע ערכים של employees, עכשיו מגיעים הפרמטרים, איזה פרמטרים?
רק תנו לי שנייה פה, סלקט, סתם נניח כוכבית from employees, אני רוצה פה פשוט להעתיק את השמות של העמודות, אלטף אחד לחצתי, השם של זה אלטף אחד, employee ID, טוב בואו נתחיל, אז אני עושה פה שטרודל, employee ID, שזה מגיע לי כפרמטר מסוג אינטג'ר,
אוקיי, הפרמטר הזה הוא פרמטר חובה, הלאה, הפרמטר השני זה last name, אני קורא לו שטרודל last name ואומר לו שהוא nvarchar אני מעתיק מפה 40 אוקיי יפה מאוד עכשיו שימו לב מה אני מוסיף פה אם לא שלחו לי את ה last name אם אף אחד לא שלח לי את ה last name נניח לא רוצים לשנות אותו לא שלחו לי את הפרמטר הזה
אני אומר שהוא לא חובה אני לבד הכניס אליו ערך ברירת מחדל שהוא נעל יפה מאוד first name first name אני עושה שטרודל first name שזה שם משתנה חדש אם לא שולחים לי את השם משתנה החדש הזה אז אני אעשה אותו nvarchar 20 יפה מאוד הלאה הבא טייטל אם שלחו לי טייטל
מצוין מה זה nvarchar 60 כן הטריק הוא שאני לא מחייב לשלוח את הפרמטר אז nvarchar 60 וככה אני עובר על כל העמודות אוקיי תחשבו שיש לי פה את כל העמודות ככה אני כותב את כל העמודות ו-title שווה n var 9.50, יופי.
birthday זה שווה ל-data time, והוא יכול להיות נ"ל. מה זה אומר? נ"ל זה אומר שלא שלחו לי את הפרמטר הזה. ו-hirdate יכול להיות נ"ל. טוב, הבנתם את הרעיון, כן?
אני לא אעשה את כל העמודות, אבל הבנתם את הרעיון. אתם ככה ממשיכים עם כל העמודות, אוקיי? אתם ממשיכים עם כל העמודות. עכשיו, איך כותבים את הקוד?
שימו לב את הטריק בכתיבת הקוד. זה אני לא צריך. update, update של employees set אני קובע שעמודה שקוראים לה last name עמודת last name שווה ושימו לב זה הטריק is null אם is null זאת פונקציה שמחזירה את הערך הראשון שנתנו לה אבל אם הערך הראשון הזה הוא null אז היא תחזיר את הערך
השני נניח פה aaa זאת אומרת is null מחזירה לנו ערך כלשהו החוצה בואו נראה is null בנפרד לפני שאני אמשיך הלאה אחרת אתם לא תבינו מה אני רוצה, אני פותח שאילתה חדשה, פה New Query, אני עושה נניח דיקלר, אני מכריז על משתנה שנקרא Last Name,
נותן לו ערך בי בי בי בי בי בי בי, ועושה לו סלקט או פרינט, תדפיס לי האם איזנה, על מה יקרה עכשיו? זה nvarchar, nvarchar 100, אוקיי? סט, אוקיי, הכרזתי על המשתנה Last Name כ-nvarchar 100, הכנסתי לו ערך בי בי בי ואז מה יקרה מה איזנאל
תעשה מה פונקציית איזנאל תעשה אם הערך הראשון הוא נעל היא תדפיס את החלק הזה אם הוא לא נעל היא תדפיס את החלק את הלאסט ניים את הפרמטר הראשון שימו לב היא מדפיסה בי בי בי למה כי זה לא נעל אבל אם אני עושה את זה בהערה וזה הופך להיות נעל כי אין לו שום ערך היא מדפיסה איי איי איי למה היא מדפיסה איי איי כי
כי החלק הזה הוא נעל, אם זה נעל, אז היא מדפיסה, הבנתם? אבל אם זה לא נעל, היא מדפיסה אותו. אז מה זה משנה לי? שימו לב, פה טריק.
אני אומר, תקשיב, העמודה last name היא שווה למה? ל-isnal. אם יש לי last name חדש, אם העבירו לי last name חדש, והוא לא נעל, כי העבירו לי אותו פה, הוא לא נעל, אז היא תיכנס לפה.
אם לא העבירו לי last name בפרמטרים, זה לא פרמטר חובה, ואז נכנס עליו נעל, אז last name שווה ל-last name ושום דבר לא השתנה.
כאילו אני לא משנה כלום, מה שלא השתנה אני לא משנה. יפה. זאת אומרת שעכשיו, שימו לב, מה זה נותן לי? בשביל מה כל השטות הזאת טובה?
אני יכול לעשות דבר כזה. בואו נעשה את זה ככה, first name שווה ל-first name, שטרודל first name.
זאת אומרת, אני אומר כך, אם נתנו לי last name פה, אם נתנו לי פה last name, תכניס אותו ל-last name. אם לא נתנו לך last name והוא נעל, מה שהיה בעמודה הזאת, זה מה שיישאר בעמודה הזאת.
first name אותו דבר.