我写了一个光标:
DECLARE CURSOR_SendMail CURSOR FAST_FORWARD
FOR
SELECT AlertId,AlertDetailsId,AlertDescription
,AlertTarget,ProjectDetailId,Subject
FROM tblAlert
WHERE AlertId > @MaxAlertID
此处@MaxAlertID
是一个ID,以便将该邮件上方的记录邮寄。
我想问的是:
在逐个获取记录并邮寄它们的同时,还会考虑在tblAlert表中插入的任何新记录,或者只是在声明游标时可用的记录。
e.g。
在声明游标时,表中存在的最大ID为1000,@MaxAlertID
为0。
所以,当我开始为1和以上的每条记录发送邮件时,我达到了一些记录517,并且有几条记录被添加到tblAlert
1001和1002,所以那些1001,1002将被考虑或将考虑最多1000个。
答案 0 :(得分:4)
查看DECLARE CURSOR
的文档。您可以指定选项,以便获得您想要的行为 - 您尚未告诉我们。
如果您不想要考虑新记录,请考虑指定STATIC
或KEYSET
。如果您执行想要考虑新记录,请指定DYNAMIC
。
我实际上无法记住默认行为是什么 - 而且目前似乎无法找到它。如果我需要特定的行为,我总是指定它而不是依赖默认行为。
答案 1 :(得分:1)
默认为动态,除非您更改了它。
答案 2 :(得分:0)
DYNAMIC
定义一个游标,该游标反映对行中所做的所有数据更改 滚动光标时的结果集。数据值, 订单,行的成员资格可以在每次获取时更改。该 动态游标不支持ABSOLUTE提取选项。
因此,将 DYNAMIC 添加到光标定义中将为您提供所需的内容。或者你需要相反吗?然后制作 STATIC 光标