
dbCount בבסיס הנתונים Northwind, עם database name מסוג sysname ו-tables count מסוג integer.insert into dbCount ושני סימני שאלה. הפרמטר הראשון הוא db name כ-nvarchar בגודל 128, במיקום 0. השני הוא number, מספר שלם, במיקום 1, וגודל לא רלוונטי.number גדול מ-8. הכפתור Test בודק שהביטוי תקין, ובחץ מופיע סימן פונקציה.הטקסט המלא של הדקות הראשונות בהרצאה «לולאת Foreach ב-SSIS - חלק 4» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדוגמה הבאה היא המשך ישיר לדוגמה הקודמת שאותה ראינו, ובתוכה נוסיף רכיב נוסף, ומתוך כך נכיר יכולות נוספות של הוויז'ואל סטודיו.
בדוגמה שלפנינו, בואו רק קצת נרווח את המקום, אנחנו עסוקים בריצה עבור כל הדאטאבסים, ועבור כל דאטאבס שלפנו את מספר הטבלאות שיש בתוכו.
את הנתון הזה אנחנו רוצים להכניס לתוך טבלה ב-SQL. אז ניצור טבלה dbCount, ובתוך הטבלה אנחנו נגדיר קודם כל את ה-database name שהוא יהיה מסוג sys name, גודל שמספיק לנו כדי לציין את שם ה-database, ואנחנו רוצים לציין כמה טבלאות יש בו tables count,
זה יהיה מסוג אינטג'ר והנה הטבלה ערוכה לפנינו שאנחנו יכולים להכניס בתוך הנתונים. נריץ את הטבלה לא לפני שנתחבר לתוך בסיס נתונים לונג פרינט שכבר יש לנו קונקשן סטרינג אליו, בי קאונט שם הטבלה והיא מכילה שם הדאטאבס וטייבל קאונט וכמות הטבלאות שנמצאות בפנים.
איך נגדיר זאת? נחזור לתוך הוויז'ואל סטודיו. וואנס עברנו וקלטנו כמה טבלאות יש בתוך אותו דאטאבס אנחנו רוצים לבצע הכנסה. שימו לב ההכנסה הפעם לא תהיה סטנדרטית אז נא לעקוב היטב.
אנחנו רוצים לבצע הכנסה, זאת אומרת שאנחנו רוצים לבצע פקודת SQL. פקודת ה-SQL עצמה, שוב פעם מתחברים קונקשן סטרינג, הפקודה עצמה היא הכנסה לתוך הטבלה עצמה db-count, להעתיק את שם הטבלה, insert into שם הטבלה והערכים שאנחנו רוצים לשלוף בהתאמה.
אנחנו רוצים להכניס את שם הדאטאבסט ואת ה-count, אז אנחנו מכניסים כאן שני פרמטרים שנקבל אותם לתוך שאילתה ומיד נגדיר אותם. שני פרמטרים שהשאילתה שלנו מקבלת.
מה הם אותם פרמטרים? נגדיל את המסך כדי שנוכל לראות טוב יותר. נבחר את הפרמטרים בהתאמה. Add, פרמטר ראשון, אנחנו יודעים, זהו שם הדאטאבס שעליו אנחנו רצים.
הוא נמצא לי בפרמטר dbName1, הוא מסוג ורקר, הוא מחרוזת, אז אנחנו נבחר כאן ורקר או nVarkar על על מנת לתמוך גם ביוניקוד. מדובר כאן על הפרמטר הראשון, הגודל שלו 128. פרמטר נוסף, מאחר ויש לי שתי סימני שאלה, הוא אותו פרמטר שמכיל לי את המספר הטבלאות שיש בתוך אותו דאטאבס. כפי שראינו בסרטון הקודם,
הכנסנו את כמות הטבלאות לתוך משתנה בשם number. המשתנה הזה בשם number הוא כרגע input, כפרמטר input לתוך התהליך שלי הוא מסוג Integer.
אנחנו יכולים להגדיר אותו כ-unsigned short, כ-unsigned int וגם כ-long על מנת להגדיר אותו כמספר שלם. מבחינת המיקום שלו הוא במקום השני ואם אנחנו מתחילים מאפס אז זה בעצם אחד והגודל כאן לא רלוונטי.
אז יש לנו כאן שני פרמטרים, שם הדאטאבס והמספר. הם נכנסים בהתאמה לתוך השאילתא שמופיעה לנו כאן. שם הדאטאבייס ומספר השורות והם ייכנסו אחר כבוד לתוך הטבלה.
עד כאן אין חידוש גדול. התהליך שלנו יודע לרוץ, לבצע חישוב ובהתאמה להכניס את השורות Insert into Database לתוך טבלת dbCount. הכל מצוין, אולם בהינתן שאנחנו לא רוצים להכניס את שמות כל הדאטאבייסים ומספר הטבלאות שלהם, אנחנו לא רוצים שיהיה קשר עם מעבר ישיר לתוך הקומפוננטה הזאת.
אנחנו יכולים לקנפג את התהליך עצמו, לקנפג את החץ עצמו ולהתלות אותו בתנאים מסוימים. כיצד עושים זאת? דאבל קליק על החץ. ביי דיפולט, כשאנחנו מסמנים חץ קשר בין שתי קומפוננטות, הוא אומר שבכל פעם שהקומפוננטה הראשונה מצליחה, זה הירוק, אנחנו עוברים לקומפוננטה הבאה. יש אפשרות
להגדיר על הצלחה, על כישלון, או שהיא מסתיימת, שזה בין הצלחה ובין כישלון, Completion זה בכל שלב שהוא, בין אם זה יסתיים בהצלחה או בכישלון.
אנחנו נשאיר את זה תחת הצלחה. אבל אני רוצה שלא עבור כל דאטאבייס ניכנס ונכניס שורה לתוך הטבלה, אלא רק על דאטאבייסים שהם מגודל מסוים, שיש להם כמות טבלאות בגודל מסוים.
איך נעשה זאת? ב-Evaluation Operator יש לנו אפשרות לבנות כאן Expression, לבנות ביטוי שהוא יהיה תנאי בוליאני שרק בהתקיים אותו תנאי אנחנו ממשיכים לצעד הבא.
נבחר כאן שלוש נקודות וכל מה שאנחנו רוצים זה שהמספר עצמו number שלנו שמכיל את מספר השורות בוא נניח אנחנו לוקחים רק דאטאבייסים שיש בהם מעל עשר טבלאות בוא נניח מעל שמונה