简体   繁体   中英

Case statement inside trigger

create trigger Insert_emp on dbo.emp
after insert
as
begin

declare @tablename varchar(50)
declare @rdatetime varchar(20)
declare @month int

set @rdatetime = (select Bdate from inserted)
set @month = (select datepart(mm,@rdatetime))
case when @month = 2 then set @tablename = 'FEP_EMP' end
print @tablename 
end

Trigger will execute after,inserting record in emp table.It will pick up date which is inserted.From that date month will be calculated.I want set value of tablename.

CASE in SQL Server can only be used to get scalar values - it cannot be used to decide which code block or statement to execute. To handle conditional code execution, use the regular IF / ELSE statements.

Change your trigger to something like:

create trigger Insert_emp on dbo.emp
after insert
as
begin

   declare @tablename varchar(50)
   declare @rdatetime varchar(20)
   declare @month int

   set @rdatetime = (select Bdate from inserted)
   set @month = (select datepart(mm,@rdatetime))

   IF @month = 2 
      set @tablename = 'FEP_EMP' 

   print @tablename 
end

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM