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
| ALTER TRIGGER [TRG_MATABLE1]
ON [MATABLE1]
FOR insert,update
AS
BEGIN
declare @r_empl_matri varchar(10)
declare @r_empl_seirestetab varchar(1)
declare @r_empl_nompre varchar(30)
declare @r_empl_seinomfam varchar(30)
declare @r_empl_seiprenom varchar(30)
declare @nompre varchar(30)
declare @r_empl_horsect varchar(40)
declare @r_empl_seiresetab varchar(1)
declare @ssinetab varchar(5)
declare @r_empl_seiqual varchar(4)
declare @r_ctra_sciqualif varchar(4)
declare @alias varchar(30)
declare @libqual varchar(20)
declare @v_tmp varchar(20)
set ansi_warnings off
set nocount on
-- déclaration des variables
declare c_empl insensitive cursor for
select matri, SEIRESETAB, nompre, horsect, seiresetab, seiqual, seinomfam, seiprenomn from inserted
open c_empl
fetch c_empl into @r_empl_matri, @r_empl_seirestetab, @r_empl_nompre, @r_empl_horsect, @r_empl_seiresetab, @r_empl_seiqual, @r_empl_seinomfam, @r_empl_seiprenom
if @@fetch_status=0
begin
if @r_empl_seinomfam is null set @r_empl_seinomfam=' '
if @r_empl_seiprenom is null set @r_empl_seiprenom=' '
set @nompre=substring(@r_empl_seinomfam+' '+@r_empl_seiprenom, 1, 30)
set @alias=upper(substring(@r_empl_seiprenom, 1, 1)+@r_empl_seinomfam)
if @r_empl_seiresetab is null or @r_empl_seiresetab=' ' set @r_empl_seiresetab ='N'
select @v_tmp=min(code) from MATABLE2 where type='H' and element='SCIREMPL' and code=substring( @r_empl_horsect, 1,2)+ @r_empl_matri
if @v_tmp is null
begin
insert into MATABLE2 (type, element, code, libcode) values ('H', 'SCIREMPL', substring( @r_empl_horsect, 1,2)+ @r_empl_matri, @nompre)
end
else
begin
update MATABLE2 set libcode=@nompre where type='H' and element='SCIREMPL' and code=substring( @r_empl_horsect, 1,2)+ @r_empl_matri
end
select @ssinetab=max(ssinetab) from hopsech where horsect=@r_empl_horsect
select @r_Ctra_sciqualif =max(sciqualif) from hopctra where matri=@r_empl_matri and convert(datetime,convert(varchar, getdate(), 103), 103) between datdeb and datfin
select @libqual=max(substring(libcode, 1, 20)) from hopcode where type='H' and element='SCIQUALIF' and code=@r_Ctra_sciqualif
if @ssinetab is null set @ssinetab=' '
if @libqual is null set @libqual=' '
if @r_empl_seiresetab ='O'
begin
update MATABLE1 set seiresetab='N' where matri<>@r_empl_matri and horsect in (select horsect from hopsech where ssinetab=@ssinetab)
update MATABLE3 set nomdir=@r_empl_nompre, qualifdir=@libqual where etab=@ssinetab
end
update MATABLE1 set nompre=@nompre, seiresetab=@r_empl_seiresetab where matri=@r_empl_matri and (nompre<>@nompre or alias<>@alias or seiresetab<>@r_empl_seiresetab)
end
close c_empl
deallocate c_empl
END |
Partager