
+, מתקבל חיבור אריתמטי או שגיאת המרה. יש להמיר את המספר ל-VARCHAR לפני השרשור.+=. סכום המספרים שעונים על התנאי בדוגמה הוא 2,722.הטקסט המלא של הדקות הראשונות בהרצאה «לולאות While - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בשיעורנו היום אנחנו נעסוק בלולאת וייל. לולאת וייל זו לולאה אשר מאפשרת ביצוע מחזורי של משפטי SQL. לולאת וייל עוטפת לנו קטע קוד על ידי תנאי בוליאני.
כל עוד התנאי הבוליאני מתקיים ותשובתו היא "תוהו", כל שורות הקוד אשר נמצאות תחת הוייל בעטופות ב-Begin ו-End אלו שורות אשר התבצעו בפועל.
אז בואו, אנחנו בשיעור הקרוב נראה שתי דוגמאות. נתחיל בגדולה מאוד מאוד פשוטה וטריוויאלית ומשם נצמח לגדולה שמורכבת יותר שתוסיף לנו נופך נוסף ללולאת y אז הנושא שלנו y ואנחנו כבר מרצים להגדיר את התוכנית הראשונה שלנו בתוכנית הזאת אנחנו רוצים להגדיר ראשית counter מונה ומונה מטבעו יהיה אינטג'רי מספר שלם המונה עצמו אנחנו רוצים להתחיל אותו
באפס ולרוץ עליו כל עוד הוא קטן שווה לעשר ולהדפיס את כל טווח המספרים בין 0 ל-10 בואו נבצע לו השמה counter שווה ל-0 כל עוד while counter קטן שווה ל-10 זהו יהיה הקנאי הווליאני שלנו כל עוד הcounter קטן מ-10 מה אנחנו נבצע נבצע את כל מה שיהיה רשום בתוך הביגים וה-end שבאים מיד מיד לאחר ה-y מיד בשורה הבאה אנחנו רושמים ביגים וכל קטע
הקוד שאנחנו נרשום אותו כאן ונחתום אותו בסוף ב-N הוא זה שיתבצע כל עוד התנאי הבוליאני הוא טרום. מה אנחנו רוצים לעשות? אנחנו רוצים להדפיס. רוצים להדפיס לטווח המספרים בין 0 ל-10? אז בואו נדפיס את הקאונטר.
הקאונטר מכיל את המספר. בל נשכח, לפני שאנחנו סוגרים את הווייל, סוגרים את הלולאה, בל נשכח לקדם סט קאונטר של הקאונטר אוכלוסייה, אנחנו מקדמים את המונה שלנו על מנת שחלילה לא תהיה לולאה אינסופית, בהיעדר התנאי הזה הלולאה הזאת תרוץ למצח.
ברגע שאנחנו מקדמים, אז ה-Counter מתכנס למספר 10, מסגור את לולאת ה-While שלנו על ידי פקודת ה-End, אנחנו סוגרים את ה-Begin, וכרגע אנחנו ערוכים ומוכנים להריץ את התוכנית הראשונה שלנו בנושא של Y. F5, אנחנו פותחים כאן את חלון המסג'ס ומגלים את כל המספרים בין 0 ל-10,
אשר מודפסים לי כפלט של התוכנית שאותה רשמנו לכתב. מצוין, בואו נתקדם לדוגמה טיפה למורכבת יותר. בדוגמה הבאה אנחנו רוצים שוב לרוץ על לולאת y, הפעם על כל המספרים הדו-ספרתיים.
בואו נסגור רגע את התוכנית ב' הקודמת, ועבור כל המספרים הדו-ספרתיים שעליהם אנחנו רצים, דהיינו בין 10 ל-99 כולל, להציג רק את אותם מספרים שאינם מתחלקים לא ב-3 ולא ב-7.
שלא מתחלקים לא בזה ולא בזה. בואו נרשום רגע לעצמנו את ההגדרה, מה אנחנו רוצים כרגע לעשות. כל המספרים הדו-ספרתיים שלא מתחלקים ב-3 ולא ב-7.
גם כאן אנחנו צריכים להגדיר לעצמנו קאנטר, והאמת שאנחנו יכולים להגדיר את אותו משתנה בדיוק כפי שהגדרנו בתוכנית הקודמת, מאחר ויש לנו גו המבדל לנו דאצ'יט בין שתי התוכניות, ולכן זה מה שאנחנו נעשה כאן.
בקלר נגדיר משתנה, יכולנו לתת לו כל שם שאנחנו רוצים כמובן, ובלבד שנגדיר אותו אינטג'רית, ובלבד שנבצע לו כמובן אתחול. סט, קאונטר.
אנחנו מתחילים ב-10, זו המספר הדו-ספרתי הקטן ביותר. רצים ונכנסים לתוכנו להדווייל. וייל קאונטר קטן מ-100. כל עוד הוא קטן מ-100 אנחנו רצים על כל המספרים, ומה בודקים?
בודקים שהם לא מתחלקים ב-3 ולא מתחלקים ב-7, בשביל זה אנחנו נזדקק לשירותיו הטובים של ה-if condition ונרשום את זה כמובן בתוך בגין. בגין if counter מודול הוא 3, כלומר קח את המספר המונה עצמו כפי שהוא ישתנה מעת לעת כיוון שהוא יירוט על כל טווח המספרים הנתון ואם הוא מתחלק ב-3 שאריתו שונה מ-0,
כלומר הוא לא מתחלק ב-3 שכן counter מודול הוא 3 מחזיר לנו את השארית כתוצאה מחלוקה בשלוש. השארית כתוצאה מחלוקה בשלוש יכולה להיות 0, 1 או 2, לא יותר מזה ולא פחות מזה.
0, 1 או 2 זו השארית שיכולה להיות בחלוקה משלוש. אנחנו רוצים מצב בו נותרנו עם שארית, כלומר המספר לא מתחלק בשלוש, לכן אנחנו נרשום שונה מ-0.
אנחנו רוצים גם את קאונטר לוודא שהוא לא מתחלק ב-7, זאת אומרת שמודול הוא שבע השארים בחלוקה לשבע היא שונה מאפס.
וואנס בדקנו כזה דבר, שוב אנחנו ניכנס לקטע של ה-if condition, ל-begin שלו, ובתוך ה-begin כל מה שאנחנו רוצים לעשות, אחר שזיהינו מספר מתאים העונה על הדרישה, להדפיס אותו.
פרינט. טרודל קאונטר למשתמש and נסגור את ה-if. לפני שאנחנו סוגרים גם את ה-while אנחנו לא שוכחים לקדם את הלולאה, על מנת המונה של הלולאה, על מנת שיתכנס לנו לתנאי יציאה למספר 100.
לקדם את זה זה SetCounter שווה ל-Counter ועוד אחד, וסוגרים גם את לולאה ה-Begin שלפנינו. סגרנו את ה-if, סגרנו את ה-while, וכל שנותר לנו כרגע זה להריץ את התוכנית, ובמהלך ה-while בתוך התוכנית עצמה יודפסים לי כל המספרים המקיימים את הדרישה שאינם מתחלקים ב-3 ואינם מתחלקים ב-7.
בחצתי F5, נפתח והנה אנחנו מזהים מחל 10, 11, 13 וכו' וכו', כל המספרים להלן שאינם מתחלקים לא ב-3 ולא ב-7 מודפסים ומוצגים כאן למשתמש כפי שנדרשנו.
אממה, בואו אנחנו רוצים לעשות כאן מספר שינויים. ראשית, במידה ואנחנו מחליטים לייתר את הקטע הזה, מכניס אותו לתוך הערה, את ההשמה הזאת.
ושים לב שאם אני מריץ את זה אנחנו נקבל כאן אומנם command completed successfully אבל אנחנו לא מצליחים כאן בעצם לבצע לא השמה של הערך ולא הדפסה של הקאונטר ולא בדיקה כלומר ברגע שיש לנו משתנה counter משתנה בתוכנית שלא התחלנו אותו, ה-idחול אינו אופציונלי ב-tsql אלא הוא מס ואם לא התחלת אז הערך הוא לא מוגדר ולכן לא ניתן להתייחס למשתנה הזה.
אני רוצה גם לא להדפיס את הערכים עצמם בתוך ה-bgm של ה-y אלא להוציא את זה החוצה. אנחנו גוררים את זה כאן החוצה. אני רוצה להדפיס אותם, אבל מה? הקאונטר הזה משתנה מעת לעת.
אם כן, אני נדרש לאיזשהו משתנה שידע לצבור לי את כל המספרים. בואו נגדיר את המשתנה עצמו, נגדיר אותו הפעם דווקא מסוג דאטה טייפ של