我在表值函数中有一个游标循环,如下面的代码所示:
DECLARE db_cursor CURSOR FOR
SELECT *
from [dbo].[GetStock]()
...
我的问题是:光标是否在每次迭代时都执行该函数?同一问题的观点。
此致
答案 0 :(得分:0)
这取决于光标的类型:
有关查询的几个限制将影响光标的类型,如下所示:Using Implicit Cursor Conversions。
您可以使用sp_describe_cursor过程找出游标类型。有关代码示例,请参阅sp_describe_cursor主题。
对于多语句UDF-s,您最有可能获得键集驱动的游标(如果结果表具有唯一键)或静态游标(如果结果表没有唯一键)。对于内联UDF,它取决于查询和基础表。
我猜你有一个多语句UDF,在这种情况下,你应该通过在声明游标时指定STATIC来避免使用键盘驱动的游标。