繁体   English   中英

触发器内的案例陈述

[英]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

触发器将在将记录插入emp表后执行。它将选择插入的日期。将从该日期开始计算月份。我想要设置表名的值。

SQL Server中的CASE仅可用于获取标量值- 不能用于确定执行哪个代码块或语句。 要处理条件代码执行,请使用常规的IF / ELSE语句。

将触发器更改为类似以下内容:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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