使用隐式游标转换

应用程序可以请求一个游标类型,然后执行不受所请求类型的服务器游标支持的一个 Transact-SQL 语句。Microsoft SQL Server 返回一个错误,指示游标类型已经改变。这种转换被称为隐式游标转换,有时也称为游标降级。

下列因素可触发 SQL Server 将游标从一种类型隐式转换为另一种类型。

步骤

触发转换的操作

只进

键集驱动

动态

转至步骤

1

查询 FROM 子句没有引用表。

变为静态。

变为静态。

变为静态。

完成

2

查询包括:选择列表聚合 GROUP BY UNION DISTINCT HAVING

变为静态。

变为静态。

变为静态。

完成

3

查询生成内部工作表,例如 ORDER BY 的列没有被索引覆盖。

变为键集。

 

变为键集。

5

4

查询引用链接服务器中的远程表。

变为键集。

 

变为键集。

5

5

查询至少引用了一个没有唯一索引的表。仅适用于 Transact-SQL 游标。

 

变为静态。

 

完成

注意注意

快进游标不能转换。

注意注意

如果所有基都没有唯一的索引,或者如果查询没有直接返回基表的键列,才执行键集和动态游标的转换。例如,如果查询包含聚合函数或集合运算符。

请参阅

概念