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

12/02/2011

אין תגובות

אני מעוניין בפונקציה שתקבל כפרמטר תאריך לידה,
ותחזיר את הגיל (מספר), יום הלידה בשבוע (טקסט), והיום הראשון בשנת הלידה (תאריך).
כיצד נעשה זאת?
פתרון- באמצעות 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, אלא שאז נשאלת השאלה מדוע לא לבצע זאת מראש בתוך הפונקציה וזה מה שעשינו..

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *