הבלוג של גרי רשף

12/02/2011

פונקציה המחזירה מספר ערכים

Filed under: Uncategorized — תגיות: , , — גרי רשף @ 21:47

אני מעוניין בפונקציה שתקבל כפרמטר תאריך לידה,
ותחזיר את הגיל (מספר), יום הלידה בשבוע (טקסט), והיום הראשון בשנת הלידה (תאריך).
כיצד נעשה זאת?
פתרון- באמצעות Table-Valued Function שתחזיר טבלה בת רשומה אחת:

Create Function dbo.MyFunc(@D DateTime)

Returns Table

As

Return    (Select DateDiff(Year,@D,GetDate()) Age,

                DateAdd(Day,-DatePart(DayOfYear,@D)+1,@D) YearBegin,

                DateName(weekday,@D) WeekDay);

Go

ונשתמש בה למשל כך:

Declare    @Gil Int,

        @RosHashana DateTime,

        @Yom Varchar(Max);


Select    @Gil=Age,

        @RosHashana=YearBegin,

        @Yom=WeekDay

From    dbo.MyFunc('19600215');


Select    @Gil,

        @RosHashana,

        @Yom;

Go

image

מה החידוש כאן?

ניתן היה להחזיר טבלה בת שלוש רשומות ושני שדות (סוג ערך, ערך),

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

ומה שיותר גרוע- יהיה צורך בשלוש שליפות – אחת לכל משתנה..

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

מודעות פרסומת

להגיב »

עדיין אין תגובות.

RSS feed for comments on this post. TrackBack URI

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

בלוג בוורדפרס.קום.

%d בלוגרים אהבו את זה: