Frage : Vernunfts-Überprüfung auf UDF Änderung

Ich habe mein UDF geändert, um Extrarate für das Wochenende Daya und Nacht hinzuzufügen. Die Rate sollte für Tag/Nacht dann selben wie der Wochentag rates.

Does angewandt jetzt sein dieser korrekte Blick:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
USE [EnergySuiteDB]
GEHEN
/****** Gegenstand:  UserDefinedFunction [dbo]. [udf_getrates_3] Index-Datum: 07/21/2010 15:37: 38 ******/
ANSI_NULLS AN EINSTELLEN
GEHEN
QUOTED_IDENTIFIER AN EINSTELLEN
GEHEN
--*********************** FUNKTION ***********************--
FUNKTION [dbo] ÄNDERN. [udf_getrates_3] (@date Datum/Uhrzeit, @util varchar (50))
BRINGT @tbl Tabelle zurück (chargerate GELD, Steuer GELD, caprate GELD, ChargeCap Hin- und Herbewegung, StandingDayCharge Geld)
WIE
ANFANGEN
  @tbl einsetzen 
  Oberseite 1 vorwählen --EffectiveStartDate, EffectiveEndDate, 
               FALL, WENN Sie verlassen werden (DATENAME (DW, @date), 1) = „S“ und isnull (weekenddaycost, 0) <> 0
                    DANN
                     FALL, WENN datepart (Stunde, @date) zwischen datepart (Stunde, weekenddaystart) und datepart (Stunde, weekenddayend)
                     DANN
                     weekenddaycost
                     SONST
                     weekendnightcost
                     ENDE
                    SONST 
                         FALL
                         WENN datepart (Stunde, @date) zwischen datepart (Stunde, weekdaystart) und datepart (Stunde, weekdayend)
                         DANN weekdaycost
                         SONST weeknightcost
                         ENDE
                    ENDE, climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
  VON EnergySuiteDB.dbo.Rates
  wo UtilityName=@util 
  UND @date zwischen EffectiveStartDate und EffectiveEndDate 
  Auftrag durch Identifikation desc    -- die „letzte“ Reihe erhalten, die das erbetene Datum umfaßt.

  wenn @@rowcount = 0
     @tbl einsetzen 
     Oberseite 1 vorwählen --EffectiveStartDate, EffectiveEndDate,
                  FALL, WENN Sie verlassen werden (DATENAME (DW, @date), 1) = „S“ und isnull (weekenddaycost, 0) <> 0
                       DANN
                     FALL, WENN datepart (Stunde, @date) zwischen datepart (Stunde, weekenddaystart) und datepart (Stunde, weekenddayend)
                     DANN
                     weekenddaycost
                     SONST
                     weekendnightcost
                     ENDE
                    SONST 
                         FALL
                         WENN datepart (Stunde, @date) zwischen datepart (Stunde, weekdaystart) und datepart (Stunde, weekdayend)
                         DANN weekdaycost
                         SONST weeknightcost
                         ENDE
                       ENDE, climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
     VON EnergySuiteDB.dbo.Rates
     wo UtilityName=@util 
     Auftrag durch EffectiveEndDate desc   -- höchstes enddate gehört, „die 1“ alle Bedeckung/die Forderungsausfallquote zu rudern.
  Rückkehr 
ENDE

Antwort : Vernunfts-Überprüfung auf UDF Änderung

Gut denke ich, dass es benötigt die Extraprüfung in dort…

So einen Blick an haben:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
FUNKTION [dbo] ÄNDERN. [udf_getrates_3] (@date Datum/Uhrzeit, @util varchar (50))
ZURÜCKBRINGT @tbl Tabelle  (chargerate GELD, Steuer GELD, caprate GELD, ChargeCap Hin- und Herbewegung, StandingDayCharge Geld)
WIE
ANFANGEN


  @dw Putzfrau erklären (1)
  @dw einstellen = verließ (DATENAME (DW, @date), 1)

  @hr int erklären
  @hr = datepart (Stunde, @date) einstellen

  @tbl einsetzen 
  Oberseite 1 vorwählen --EffectiveStartDate, EffectiveEndDate, 
         FALL, WENN @dw = „S“ und (   (@hr zwischen datepart (Stunde, weekenddaystart) und datepart (Stunde, weekenddayend) und isnull (weekenddaycost, 0) <> 0)
                                  oder (@hr NICHT zwischen datepart (Stunde, weekenddaystart) und datepart (Stunde, weekenddayend) und isnull (weekendnightcost, 0) <> 0))
              DANN
                     FALL, WENN @hr zwischen datepart (Stunde, weekenddaystart) und datepart (Stunde, weekenddayend)
                          DANN weekenddaycost
                          SONST weekendnightcost
                     ENDE
              SONST 
                     FALL, WENN @hr zwischen datepart (Stunde, weekdaystart) und datepart (Stunde, weekdayend)
                          DANN weekdaycost
                          SONST weeknightcost
                     ENDE
         ENDE, climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
  VON   EnergySuiteDB.dbo.Rates
  wo  UtilityName=@util 
  UND @date zwischen EffectiveStartDate und EffectiveEndDate 
  Auftrag durch Identifikation desc    -- die „letzte“ Reihe erhalten, die das erbetene Datum umfaßt.

  wenn @@rowcount = 0
     @tbl einsetzen 
     Oberseite 1 vorwählen --EffectiveStartDate, EffectiveEndDate, 
         FALL, WENN @dw = „S“ und (   (@hr zwischen datepart (Stunde, weekenddaystart) und datepart (Stunde, weekenddayend) und isnull (weekenddaycost, 0) <> 0)
                                  oder (@hr NICHT zwischen datepart (Stunde, weekenddaystart) und datepart (Stunde, weekenddayend) und isnull (weekendnightcost, 0) <> 0))
              DANN
                     FALL, WENN @hr zwischen datepart (Stunde, weekenddaystart) und datepart (Stunde, weekenddayend)
                          DANN weekenddaycost
                          SONST weekendnightcost
                     ENDE
              SONST 
                     FALL, WENN @hr zwischen datepart (Stunde, weekdaystart) und datepart (Stunde, weekdayend)
                          DANN weekdaycost
                          SONST weeknightcost
                     ENDE
         ENDE, climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
     VON EnergySuiteDB.dbo.Rates
     wo UtilityName=@util 
     Auftrag durch EffectiveEndDate desc   -- höchstes enddate gehört, „die 1“ alle Bedeckung/die Forderungsausfallquote zu rudern.
  Rückkehr 
ENDE
Weitere Lösungen  
 
programming4us programming4us