Fråga : Sanitykontroll på UDF-ändring

Jag har ändrat min UDF för att tillfoga extrahjälpen klassar för tillbringa veckoslutet daya och natt. Klassar bör nu vara applied för dag/natt därefter samma som vardagen rates.

Does denna korrekta look:
> för
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:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
" codeBody " " >USE för class= " för 0 för isnull (weekenddaycost, 0) DÄREFTER FALL, NÄR datepart (timme, @date) mellan datepart (timme, weekenddaystart) och datepart (timme, weekenddayend) DÄREFTER weekenddaycost ANNARS weekendnightcost AVSLUTA ANNARS FALL NÄR datepart (timme, @date) mellan datepart (timme, weekdaystart) och datepart (timme, weekdayend) DÄREFTER weekdaycost ANNAN weeknightcost AVSLUTA AVSLUTA climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0) FRÅN EnergySuiteDB.dbo.Rates var UtilityName=@util OCH @date mellan EffectiveStartDate och EffectiveEndDate Beställa vid LEGITIMATION desc -- få ”det sist” ror som täcker bedd daterar. om @@rowcount = 0 sätt in @tbl välj bästa 1 --EffectiveStartDate EffectiveEndDate, FALL, NÄR du lämnas (DATENAME (DW, @date), 1) = ”S” och <> 0 för isnull (weekenddaycost, 0) DÄREFTER FALL, NÄR datepart (timme, @date) mellan datepart (timme, weekenddaystart) och datepart (timme, weekenddayend) DÄREFTER weekenddaycost ANNARS weekendnightcost AVSLUTA ANNARS FALL NÄR datepart (timme, @date) mellan datepart (timme, weekdaystart) och datepart (timme, weekdayend) DÄREFTER weekdaycost ANNAN weeknightcost AVSLUTA AVSLUTA climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0) FRÅN EnergySuiteDB.dbo.Rates var UtilityName=@util beställa vid EffectiveEndDate desc -- högst enddate hör hemma ”ror den 1” all beläggningen/standarden klassar. retur AVSLUTA
" klar "

Svar : Sanitykontroll på UDF-ändring

Välla fram mig gör funderare som den behöver extrahjälpen som kontrollerar i där…,

Ha en look på, så:
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:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
FÖRÄNDRA SIG FUNGERAR [dboen]. [udf_getrates_3] (@datedatetime, varchar @util (50))
RETUR@tbl bordlägger (chargeratePENGAR, uttaxeringPENGAR, capratePENGAR, den ChargeCap flötet, StandingDayCharge pengar)
SOM
BÖRJA


  förklara @dwröding (1)
  fastställd @dw = lämnat (DATENAME (DW, @date), 1)

  förklara @hr int
  fastställd @hr = datepart (timme, @date)

  sätt in @tbl 
  välj bästa 1 --EffectiveStartDate EffectiveEndDate, 
         FALL, NÄR @dw = ”S” och (   (@hr mellan datepart (timme, weekenddaystart) och datepart (timme, weekenddayend) och isnull (weekenddaycost, 0) <> 0)
                                  eller (@hr INTE mellan datepart (timme, weekenddaystart) och datepart (timme, weekenddayend) och isnull (weekendnightcost, 0) <> 0))
              DÄREFTER
                     FALL, NÄR @hr mellan datepart (timme, weekenddaystart) och datepart (timme, weekenddayend)
                          DÄREFTER weekenddaycost
                          ANNAN weekendnightcost
                     AVSLUTA
              ANNARS 
                     FALL, NÄR @hr mellan datepart (timme, weekdaystart) och datepart (timme, weekdayend)
                          DÄREFTER weekdaycost
                          ANNAN weeknightcost
                     AVSLUTA
         AVSLUTA climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
  FRÅN   EnergySuiteDB.dbo.Rates
  var  UtilityName=@util 
  OCH @date mellan EffectiveStartDate och EffectiveEndDate 
  Beställa vid LEGITIMATION desc    -- få ”det sist” ror som täcker bedd daterar.

  om @@rowcount = 0
     sätt in @tbl 
     välj bästa 1 --EffectiveStartDate EffectiveEndDate, 
         FALL, NÄR @dw = ”S” och (   (@hr mellan datepart (timme, weekenddaystart) och datepart (timme, weekenddayend) och isnull (weekenddaycost, 0) <> 0)
                                  eller (@hr INTE mellan datepart (timme, weekenddaystart) och datepart (timme, weekenddayend) och isnull (weekendnightcost, 0) <> 0))
              DÄREFTER
                     FALL, NÄR @hr mellan datepart (timme, weekenddaystart) och datepart (timme, weekenddayend)
                          DÄREFTER weekenddaycost
                          ANNAN weekendnightcost
                     AVSLUTA
              ANNARS 
                     FALL, NÄR @hr mellan datepart (timme, weekdaystart) och datepart (timme, weekdayend)
                          DÄREFTER weekdaycost
                          ANNAN weeknightcost
                     AVSLUTA
         AVSLUTA climateChangeLevyRate, ((chargeablecapacity*capacityrate)), chargeablecapacity, isnull (StandingDayCharge, 0)
     FRÅN EnergySuiteDB.dbo.Rates
     var UtilityName=@util 
     beställa vid EffectiveEndDate desc   -- högst enddate hör hemma ”ror den 1” all beläggningen/standarden klassar.
  retur 
AVSLUTA
Andra lösningar  
 
programming4us programming4us