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