Easyboy
Starting Member
2 Posts |
Posted - 2010-09-01 : 04:34:07
|
This is the error while creating trigger.Error: Error: Msg 134, Level 15, State 1, Procedure TR_TestSmorgasbord_U, Line 113The variable name '@req' has already been declared. Variable names must be unique within a query batch or stored procedure.Trigger:Create Trigger TR_TestSmorgasbord_U on TestSmorgasbord for Update NOT FOR REPLICATION as if (@@RowCount = 0) returndeclare @AtDateTime datetime,@LogOperation tinyint,@UserName varchar(255)declare @AppName varchar(255) SET NOCOUNT ON/*** Retrieve current user name executing the SQL action*/SELECT @UserName = loginame FROM master.dbo.sysprocesses WHERE spid=@@SPID/* ** Retrieve the name of the current application */ select @AppName = APP_NAME() if (len(@AppName) = 0) SELECT @AppName = 'Unknown' /*** Retrieve default log data*/select @AtDateTime = GETDATE()/*** OID Key Protection for TestSmorgasbord*/if Update(KeyTestSmorgasbord)BeginRaisError( 'Invalid attempt to update OID KeyTestSmorgasbord in TestSmorgasbord', 16, 1 )Rollback Tranreturnend/***Unique Constraint for TestSmorgasbord - TestGenericItem1.TestDate.*/if (Update(TestGenericItem1) or Update(TestDate)) and Exists(SELECT * FROM inserted i INNER LOOP JOIN TestSmorgasbord x ON (i.TestGenericItem1=x.TestGenericItem1 and i.TestDate=x.TestDate)WHERE i.updoperation IN (0, 1) AND x.updoperation IN (0, 1) GROUP BY x.TestGenericItem1,x.TestDateHAVING COUNT(*) > 1)BEGINRAISERROR( 'Invalid attempt to enter duplicate TestGenericItem1,TestDate in TestSmorgasbord', 16, -1 )ROLLBACK TRANRETURNENDif @UserName = 'systrans' or @UserName = 'dmztrans'returnset @LogOperation = 1--Begin Custom Trigger--Begin MRS Trigger Codedeclare @req int, @holder int, @bindtoken varchar(255), @hr intdeclare @TestGenericItem1 varchar( 50 )if exists (select * from deleted where updoperation in (0,1)) or exists (select * from inserted where updoperation in (0,1))beginexec sp_OACreate 'SNL.TriggerRequest', @req OUTPUTexec sp_OAGetProperty @req, 'KeyHolder', @holder OUTPUT, '{928f1d60-783d-11d3-91f6-00c04f2e3ed7}', 0, 2790declare curs cursor for select distinct TestGenericItem1from inserted where updoperation in (0,1)union select distinct TestGenericItem1from deleted where updoperation in (0,1)open cursfetch next from curs into @TestGenericItem1while @@FETCH_STATUS = 0beginexec @hr = sp_OAMethod @holder, 'AddKeys', NULL, @TestGenericItem1if @hr <> 0beginexec sp_OADestroy @holderexec sp_OADestroy @reqclose cursdeallocate cursraiserror( 'Trigger error, phase 1, return code %x', 16, -1, @hr )rollback tranreturnendfetch next from curs into @TestGenericItem1endexec sp_OADestroy @holderclose cursdeallocate cursendif exists (select * from deleted where updoperation in (0,1)) or exists (select * from inserted where updoperation in (0,1))begin exec sp_getbindtoken @bindtoken OUTPUT, 1exec @hr = sp_OAMethod @req, 'Execute', NULL, @bindtoken, -1exec sp_OADestroy @reqif @hr <> 0beginraiserror( 'Trigger error, phase 2, return code %x', 16, -1, @hr )rollback tranreturnendend--End MRS Trigger Code--Begin RowParentIndicator Trigger Codeif update(KeyTestSmorgasbordParent) begindeclare @req int, @holder int, @bindtoken varchar(255), @hr intdeclare @TreeID intexec sp_OACreate 'SNL.TriggerRequest', @req OUTPUTexec sp_OAGetProperty @req, 'KeyHolder', @holder OUTPUT, '{928f1e95-783d-11d3-91f6-00c04f2e3ed7}', 0, 2790declare curs cursor for select distinct TreeIDfrom deleted open cursfetch next from curs into @TreeIDwhile @@FETCH_STATUS = 0beginexec @hr = sp_OAMethod @holder, 'AddKeys', NULL, @TreeIDif @hr <> 0beginexec sp_OADestroy @holderexec sp_OADestroy @reqclose cursdeallocate cursraiserror( 'Trigger error, phase 1, return code %x', 16, -1, @hr )rollback tranreturnendfetch next from curs into @TreeIDendclose cursdeallocate cursdeclare curs cursor for select distinct TreeID FROM TestSmorgasbord Where KeyTestSmorgasbord IN (SELECT DISTINCT KeyTestSmorgasbordParent from inserted )open cursfetch next from curs into @TreeIDwhile @@FETCH_STATUS = 0beginexec @hr = sp_OAMethod @holder, 'AddKeys', NULL, @TreeIDif @hr <> 0beginexec sp_OADestroy @holderexec sp_OADestroy @reqclose cursdeallocate cursraiserror( 'Trigger error, phase 1, return code %x', 16, -1, @hr )rollback tranreturnendfetch next from curs into @TreeIDendclose cursdeallocate cursdeclare curs cursor for select distinct KeyTestSmorgasbord FROM inserted WHERE KeyTestSmorgasbordParent IS NULLopen cursfetch next from curs into @TreeIDwhile @@FETCH_STATUS = 0beginexec @hr = sp_OAMethod @holder, 'AddKeys', NULL, @TreeIDif @hr <> 0beginexec sp_OADestroy @holderexec sp_OADestroy @reqclose cursdeallocate cursraiserror( 'Trigger error, phase 1, return code %x', 16, -1, @hr )rollback tranreturnendfetch next from curs into @TreeIDendclose cursdeallocate cursexec sp_OADestroy @holderexec sp_getbindtoken @bindtoken OUTPUT, 1exec @hr = sp_OAMethod @req, 'Execute', NULL, @bindtoken, -1exec sp_OADestroy @reqif @hr <> 0beginraiserror( 'Trigger error, phase 2, return code %x', 16, -1, @hr )rollback tranreturnendend--End RowParentIndicator Trigger Code--End Custom Trigger/*** UpdDate Check */ if not Update(UpdDate)beginUpdate aset UpdDate = @AtDateTimefrom TestSmorgasbord a, Inserted iwhere a.KeyTestSmorgasbord = i.KeyTestSmorgasbordif @@ERROR<>0beginRollBack tranreturn/* Execution stops here! */endend/*** Log the change--New Logging Logic -Omar Nov2008*/INSERT INTO SNLEditLog_new.dbo.TestSmorgasbord (KeyTestSmorgasbord, WhenModified, KeyItem, UserName, AppName, UpdOperation, OldValue, NewValue)SELECT * FROM (SELECT i.KeyTestSmorgasbord, @AtDateTime AS WhenModified, KeyItem_, @UserName AS UserName, @AppName AS AppName, @LogOperation AS UpdOperation,CASE KeyItem_WHEN N'52052' THEN convert(varChar(255),d.KeyTestSmorgasbordParent)WHEN N'52050' THEN convert(varChar(255),d.TestDate)WHEN N'52054' THEN convert(varChar(255),d.TestFormOrder)WHEN N'51914' THEN convert(varChar(255),d.TestGenericItem1)WHEN N'2082' THEN convert(varChar(255),d.AppStatus)WHEN N'482' THEN convert(varChar(255),d.UpdOperation)END AS OldValue,CASE KeyItem_WHEN N'52052' THEN convert(varChar(255),i.KeyTestSmorgasbordParent)WHEN N'52050' THEN convert(varChar(255),i.TestDate)WHEN N'52054' THEN convert(varChar(255),i.TestFormOrder)WHEN N'51914' THEN convert(varChar(255),i.TestGenericItem1)WHEN N'2082' THEN convert(varChar(255),i.AppStatus)WHEN N'482' THEN convert(varChar(255),i.UpdOperation)END AS NewValueFROM inserted AS iJOIN deleted AS d ON i.KeyTestSmorgasbord = d.KeyTestSmorgasbordCROSS JOIN (SELECT N'52052' AS KeyItem_UNION ALL SELECT N'52050'UNION ALL SELECT N'52054'UNION ALL SELECT N'51914'UNION ALL SELECT N'2082'UNION ALL SELECT N'482') AS C) AS TWHERE OldValue <> NewValueOR (OldValue IS NULL AND NewValue IS NOT NULL)OR (OldValue IS NOT NULL AND NewValue IS NULL)goThanks & Regard |
|