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:
|
--NUOVI RISULTATI DEL CURSORE
dichiarare
@w_RetCode int,
@w_RetStatus int,
@w_RetMsg varchar (255),
datetime @r_PrevWorkDay,
datetime @r_NextWorkDay,
carbone del @w_EmployeeID (6),
@w_EmployeeCode int,
datetime @w_NPDDay,
datetime del @p_BeginDate,
datetime del @p_EndDate
selezionare il @w_RetCode = 0
selezionare il @p_BeginDate = “08/01/10„
selezionare il @p_EndDate = “08/10/10„
DICHIARARE
datetime del @TMP_BeginDate,
datetime del @TMP_EndDate
REGOLARE il @TMP_BeginDate = DATEADD (settimana, -3, @p_BeginDate)
REGOLARE il @TMP_EndDate = DATEADD (settimana, +3, @p_EndDate)
DICHIARARE LA TABELLA del @TSD (CNT [int] NON NULLO,
[EMPLOYEECODE] [int] NON ANNULLARE,
[ADMINISTRATIONDATE] [datetime] POSIZIONE DI SEGNALE MINIMO,
[DAILYPATTERNCODE] [int] POSIZIONE DI SEGNALE MINIMO,
[STANDARDMINSINDAILYPATTERN] [smallint] POSIZIONE DI SEGNALE MINIMO,
[STANDARDMINUTESACHIEVED] [smallint] NON POSIZIONE DI SEGNALE MINIMO)
INSERIRE IN @TSD
SELEZIONARE CNT
, EMPLOYEECODE
, ADMINISTRATIONDATE
, DAILYPATTERNCODE
, STANDARDMINSINDAILYPATTERN
, STANDARDMINUTESACHIEVED
Da dbo.TIMESUMMARYDAY
DOVE DAILYPATTERNCODE = 68206 E
ADMINISTRATIONDATE FRA @TMP_BEGINDATE E @TMP_ENDDATE
CANCELLAZIONE DA @TSD
DOVE (STANDARDMINSINDAILYPATTERN = 0 E STANDARDMINUTESACHIEVED <> 0)
DICHIARARE LA TABELLA DEL @EMP (
[EmployeeId] [varchar] (15) NON ANNULLARE,
[EmployeeCode] [int] POSIZIONE DI SEGNALE MINIMO,
[Cognome] [varchar] (40) ANNULLANO,
[Nomi] [varchar] (40) ANNULLANO,
[Squadra] [varchar] (16) ANNULLANO,
[Centro] [varchar] (5) POSIZIONE DI SEGNALE MINIMO)
INSERTO IN @EMP
SELEZIONARE EmployeeId
, EmployeeCode
, Cognome
, Nomi
, Centro
, Squadra
Da dbo.xPLT_EmpInfo
DOVE active > 0
DICHIARARE IL CURSORE del emp_cur per
SELEZIONARE
eiv.EmployeeID,
tsd.EMPLOYEECODE,
tsd.ADMINISTRATIONDATE
Dal eiv del @EMP
interno unire il @TSD DST
su eiv.EmployeeCode = tsd.EmployeeCode
DOVE
tsd.ADMINISTRATIONDATE fra @p_BeginDate e @p_EndDate e
tsd.STANDARDMINSINDAILYPATTERN = 0
GENERARE LA TABELLA #TMP9001
(
Carbone di EmployeeID (6),
Datetime di NPDDay,
Datetime di PrevWorkDayAbs,
Datetime di NextWorkDayAbs
)
aprire il emp_cur
andare a prendere dopo da emp_cur in @w_EmployeeID, @w_EmployeeCode, @w_NPDDay
se @@fetch_status <> 0
end_ret di avanzamento -- nessun dati di qualificazione al processo
mentre @@fetch_status = 0
cominciare -- ciclo del cursore
-- determinare i giorni precedenti & prossimi del lavoro
@w_RetStatus del exec = @w_EmployeeId di dbo.xPLT_PrevNextWorkDay, @w_NPDDay, 0, uscita @r_PrevWorkDay, uscita @r_NextWorkDay
se @w_RetStatus <> 0
cominciare
selezionare il @w_RetMsg = “xPLT_WTAAbsenceSpanNPD: denominare a venire a mancare xPLT_PrevNextWorkDay con il codice di ritorno: „ + convertito (carbone (1), @w_RetStatus)
raiserror ("%s„, 18.1, @w_RetMsg)
selezionare il @w_RetCode = 1
end_ret di avanzamento
estremità
-- provare ad assenza di giorni interi i giorni precedenti & prossimi del lavoro
se
(
prescelto
conteggio (*)
da
@TSD DST
dove
tsd.EMPLOYEECODE = @w_EmployeeCode e
(tsd.ADMINISTRATIONDATE = @r_PrevWorkDay o tsd.ADMINISTRATIONDATE = @r_NextWorkDay) e
tsd.STANDARDMINSINDAILYPATTERN > 0 e
tsd.STANDARDMINUTESACHIEVED = 0
) = 2
cominciare
inserire in #tmp9001 (EmployeeID, NPDDay, PrevWorkDayAbs, NextWorkDayAbs)
valori (@w_EmployeeID, @w_NPDDay, @r_PrevWorkDay, @r_NextWorkDay)
estremità
andare a prendere dopo da emp_cur in @w_EmployeeID, @w_EmployeeCode, @w_NPDDay
estremità -- ciclo del cursore
-- resultset di ritorno
prescelto
t1.*,
eiv. Cognome,
eiv. Nomi,
eiv. Centro,
eiv. Squadra
da
T1 #tmp9001
interno unire il eiv di dbo.xPLT_EmpInfo_Vw
su t1.EmployeeID = eiv.EmployeeID FASCICOLANO Latin1_General_CI_AS
ordine vicino
t1.EmployeeID,
t1.NPDDay
--selezionare * a partire dal T1 #tmp9001
end_ret:
emp_cur vicino
cancell l'assegnazioneare del emp_cur
cadere la tabella #tmp9001
--restituire il @w_RetCode
selezionare il @w_RetCode
ANDARE
|