Tuesday, November 18, 2008

טריק:איך לתזמן דוח רק במידה והוא מחזיר נתונים

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

משהו כמו (מתאים ל- SQL server ) :

=CAST(CASE count(*) WHEN 0 THEN '0 rows returned forced SQL error' ELSE count(*) END AS int)

מאחר ו- SQL server לא יכול לבצע cast על ההודעה הוא יייצר הודעת שגיאה ייזומה מה שיפיל את ה- Instance והדוח לא יתוזמן ועל כן גם לא ישלח,במידה ויוחזרו רשומות,הריצה תתבצע כרגיל,הדוח ישלח ליעדו ותוכלו לחגוג עם החבר'ה בהרמת כוסית קפה.

אם אתם על Oracle תצטרכו לחקות את ה-SQL עם תחביר מקביל או דומה.

3 comments:

  1. Dr.Z נותן פתרון אלגנטי ופשוט יותר

    ליצירת הודעת השגיאה המדומה:

    count(*)/1

    ככה זה עם דוקטורים...

    ReplyDelete
  2. רעיון להפיל דו''ח ריק ממש מגניב, אבל אולי תוכל להציע משהו גם לעבדי ORACLE?

    ReplyDelete
  3. הי,
    אתה יכול להשתמש בטריק של ה- count

    ReplyDelete