您现在的位置是:首页 > SQLServer

SQLServer

触发器中的游标

2020-11-21 11:29:46 SQLServer admin
触发器响应Insert,要处理每条记录,需要使用游标吗?这里使用游标,是不是多余的?请指教我是这样写的。SET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGO-- 新建触发器ALTER trigger

触发器响应Insert,要处理每条记录,需要使用游标吗?
这里使用游标,是不是多余的?请指教
我是这样写的。
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

-- 新建触发器
ALTER trigger trig_level_ST_River_R -- 触发器名称
on [zj_sy_st].dbo.ST_River_R -- 对应的表名
for insert
as
begin
-- 触发器语句块--------------------------------------------------------------开始
SET NOCOUNT ON
declare @stcd varchar(8) -- 站点ID
declare @YMDHM datetime -- 当前所对应的时间
declare @ZR decimal(8,2) -- 水位

-- 定义一个查询逻辑表的游标
declare level_cursor cursor local for select stcd,YMDHM,ZR from inserted
open level_cursor
fetch next from level_cursor into @stcd,@YMDHM,@ZR
while @@fetch_status=0
begin
-- 循环游标
-- 执行存储过程
set @stcd=rtrim(@stcd)
set @stcd=lower(@stcd)
if DATEADD( hh , -3, getdate()) <= @YMDHM
exec [oa].dbo.proc_warnning_site_level @stcd,@YMDHM,@ZR,'河道'
fetch next from level_cursor into @stcd,@YMDHM,@ZR
end
-- 关闭游标
close level_cursor
-- 释放游标
DealLocate level_cursor
-- 触发器语句块--------------------------------------------------------------结束
end

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

N 嶯/f萐黚}T哊