1 wordt geroepen: 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: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129:
CREATE procedure [dbo]. [xPLT_WTAAbsenceSpanNPD] ( @p_BeginDate datetime, @p_EndDate datetime ) zoals /* Deze Versie - 1.0 Ver 1.0 - per U0158 tot steun van Op jaarbasis berekende Uren wordt gecre�ërd dat 23/06/2009 */ verklaar @w_RetCode int., @w_RetStatus int., @w_RetMsg varchar (255), @r_PrevWorkDay datetime, @r_NextWorkDay datetime, @w_EmployeeID klusje (6), @w_EmployeeCode int., @w_NPDDay datetime selecteer @w_RetCode = 0 verklaar emp_cur CURSEUR voor selecteer eiv.EmployeeID, tsd.EMPLOYEECODE, tsd.ADMINISTRATIONDATE van dbo.xPLT_EmpInfo_Vw eiv met (nolock) binnen sluit me aan bij dbo.TIMESUMMARYDAY tsd met (nolock) op eiv.EmployeeCode = tsd.EmployeeCode waar tsd.ADMINISTRATIONDATE tussen @p_BeginDate en @p_EndDate en tsd.DAILYPATTERNCODE = 68206 en -- niet-productie tsd.STANDARDMINSINDAILYPATTERN = 0 en bestaat (uitgezocht * van dbo.TIMESUMMARYDAY met (nolock) waar EmployeeCode = tsd.EmployeeCode en AdministrationDate tussen dateadd (week, -3, @p_BeginDate) en dateadd (week, +3, @p_EndDate) en STANDARDMINSINDAILYPATTERN > 0 en STANDARDMINUTESACHIEVED = 0) -- controleer slechts als misschien relevante volledige dagafwezigheid binnen het „venster“ orde langs eiv.EmployeeID, tsd.ADMINISTRATIONDATE voor slechts gelezen cre�ër lijst #tmp9001 ( Het klusje van EmployeeID (6), Datetime van NPDDay, Datetime van PrevWorkDayAbs, Datetime van NextWorkDayAbs ) open emp_cur haal daarna van emp_cur in @w_NPDDay @w_EmployeeID, @w_EmployeeCode, als @@fetch_status <> 0 goto end_ret -- geen kwalificerende gegevens aan proces terwijl @@fetch_status = 0 begin -- curseur lijn -- bepaal vorige & volgende het werkdagen exec @w_RetStatus = dbo.xPLT_PrevNextWorkDay @w_EmployeeId, @w_NPDDay, 0, @r_PrevWorkDay output, @r_NextWorkDay output als @w_RetStatus <> 0 begin selecteer @w_RetMsg = „xPLT_WTAAbsenceSpanNPD: vraag aan xPLT_PrevNextWorkDay ontbroken met terugkeercode: “ + bekeerling (klusje (1), @w_RetStatus) raiserror („%s“, 18.1, @w_RetMsg) selecteer @w_RetCode = 1 goto end_ret eind -- test voor volledige dagenafwezigheid op vorige & volgende het werkdagen als ( selecteer telling (*) van dbo.TIMESUMMARYDAY tsd met (nolock) waar tsd.EMPLOYEECODE = @w_EmployeeCode en (tsd.ADMINISTRATIONDATE = @r_PrevWorkDay of tsd.ADMINISTRATIONDATE = @r_NextWorkDay) en tsd.STANDARDMINSINDAILYPATTERN > 0 en tsd.STANDARDMINUTESACHIEVED = 0 ) = 2 begin tussenvoegsel in #tmp9001 (EmployeeID, NPDDay, PrevWorkDayAbs, NextWorkDayAbs) waarden (@w_EmployeeID, @w_NPDDay, @r_PrevWorkDay, @r_NextWorkDay) eind haal daarna van emp_cur in @w_NPDDay @w_EmployeeID, @w_EmployeeCode, eind -- curseur lijn -- terugkeer resultset selecteer t1.*, eiv. Achternaam, eiv. Voornamen, eiv. Centrum, eiv. Team van #tmp9001 t1 binnen sluit me aan bij dbo.xPLT_EmpInfo_Vw eiv op t1.EmployeeID = BRENGEN eiv.EmployeeID Latin1_General_CI_AS bij elkaar orde langs t1.EmployeeID, t1.NPDDay end_ret: dichte emp_cur deallocate emp_cur laat vallen lijst #tmp9001 keer @w_RetCode terug GA van
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: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168:
--DE NIEUWE RESULTATEN VAN DE CURSEUR verklaar @w_RetCode int., @w_RetStatus int., @w_RetMsg varchar (255), @r_PrevWorkDay datetime, @r_NextWorkDay datetime, @w_EmployeeID klusje (6), @w_EmployeeCode int., @w_NPDDay datetime, @p_BeginDate datetime, @p_EndDate datetime selecteer @w_RetCode = 0 selecteer @p_BeginDate = „08/01/10“ selecteer @p_EndDate = „08/10/10“ VERKLAAR @TMP_BeginDate datetime, @TMP_EndDate datetime REEKS @TMP_BeginDate = DATEADD (week, -3, @p_BeginDate) REEKS @TMP_EndDate = DATEADD (week, +3, @p_EndDate) VERKLAAR @TSD- LIJST (CNT [INT.] NIETIG VERKLAREN NIET, [EMPLOYEECODE] [INT.] OM NIETIG TE VERKLAREN NIET, [ADMINISTRATIONDATE] [datetime] VERKLAAR nietig, [DAILYPATTERNCODE] [int.] VERKLAAR nietig, [STANDARDMINSINDAILYPATTERN] [smallint] VERKLAAR nietig, [STANDARDMINUTESACHIEVED] [SMALLINT] OM NIETIG TE VERKLAREN NIET) TUSSENVOEGSEL IN @TSD SELECTEER CNT , EMPLOYEECODE , ADMINISTRATIONDATE , DAILYPATTERNCODE , STANDARDMINSINDAILYPATTERN , STANDARDMINUTESACHIEVED VAN dbo.TIMESUMMARYDAY WAAR DAILYPATTERNCODE = 68206 EN ADMINISTRATIONDATE TUSSEN @TMP_BEGINDATE EN @TMP_ENDDATE SCHRAP VAN @TSD WAAR (STANDARDMINSINDAILYPATTERN = 0 EN STANDARDMINUTESACHIEVED <> 0) VERKLAAR @EMP- LIJST ( [[Varchar] EmployeeId] (15) NIETIG VERKLAREN niet, [EmployeeCode] [int.] VERKLAAR nietig, [[Varchar] Achternaam] (40) VERKLAAR nietig, [[Varchar] Voornamen] (40) VERKLAAR nietig, [[Varchar] Team] (16) VERKLAAR nietig, [Centrum] [varchar] (5) VERKLAART nietig) TUSSENVOEGSEL IN @EMP SELECTEER EmployeeId , EmployeeCode , Achternaam , Voornamen , Centrum , Team VAN dbo.xPLT_EmpInfo WAAR actieve > 0 VERKLAAR emp_cur CURSEUR voor SELECTEER eiv.EmployeeID, tsd.EMPLOYEECODE, tsd.ADMINISTRATIONDATE VAN @EMP eiv binnen sluit me aan bij @TSD tsd op eiv.EmployeeCode = tsd.EmployeeCode WAAR tsd.ADMINISTRATIONDATE tussen @p_BeginDate en @p_EndDate en tsd.STANDARDMINSINDAILYPATTERN = 0 CRE�ëR LIJST #TMP9001 ( Het klusje van EmployeeID (6), Datetime van NPDDay, Datetime van PrevWorkDayAbs, Datetime van NextWorkDayAbs ) open emp_cur haal daarna van emp_cur in @w_NPDDay @w_EmployeeID, @w_EmployeeCode, als @@fetch_status <> 0 goto end_ret -- geen kwalificerende gegevens aan proces terwijl @@fetch_status = 0 begin -- curseur lijn -- bepaal vorige & volgende het werkdagen exec @w_RetStatus = dbo.xPLT_PrevNextWorkDay @w_EmployeeId, @w_NPDDay, 0, @r_PrevWorkDay output, @r_NextWorkDay output als @w_RetStatus <> 0 begin selecteer @w_RetMsg = „xPLT_WTAAbsenceSpanNPD: vraag aan xPLT_PrevNextWorkDay ontbroken met terugkeercode: “ + bekeerling (klusje (1), @w_RetStatus) raiserror („%s“, 18.1, @w_RetMsg) selecteer @w_RetCode = 1 goto end_ret eind -- test voor volledige dagenafwezigheid op vorige & volgende het werkdagen als ( selecteer telling (*) van @TSD tsd waar tsd.EMPLOYEECODE = @w_EmployeeCode en (tsd.ADMINISTRATIONDATE = @r_PrevWorkDay of tsd.ADMINISTRATIONDATE = @r_NextWorkDay) en tsd.STANDARDMINSINDAILYPATTERN > 0 en tsd.STANDARDMINUTESACHIEVED = 0 ) = 2 begin tussenvoegsel in #tmp9001 (EmployeeID, NPDDay, PrevWorkDayAbs, NextWorkDayAbs) waarden (@w_EmployeeID, @w_NPDDay, @r_PrevWorkDay, @r_NextWorkDay) eind haal daarna van emp_cur in @w_NPDDay @w_EmployeeID, @w_EmployeeCode, eind -- curseur lijn -- terugkeer resultset selecteer t1.*, eiv. Achternaam, eiv. Voornamen, eiv. Centrum, eiv. Team van #tmp9001 t1 binnen sluit me aan bij dbo.xPLT_EmpInfo_Vw eiv op t1.EmployeeID = BRENGEN eiv.EmployeeID Latin1_General_CI_AS bij elkaar orde langs t1.EmployeeID, t1.NPDDay --selecteer * uit #tmp9001- t1 end_ret: dichte emp_cur deallocate emp_cur laat vallen lijst #tmp9001 --keer @w_RetCode terug selecteer @w_RetCode GA