使用隐式游标转换
应用程序可以请求一个游标类型,然后执行不受所请求类型的服务器游标支持的一个 Transact-SQL 语句。Microsoft SQL Server 2005 返回一个错误,指出游标类型已经改变。这种转换被称为隐式游标转换,有时也称为游标降级。
下列因素可触发 SQL Server 将游标从一种类型隐式转换为另一种类型。
步骤 | 触发转换的操作 | 只进 | 键集驱动 | 动态 | 转至步骤 |
---|---|---|---|---|---|
1 |
查询 FROM 子句没有引用表。 |
变为静态。 |
变为静态。 |
变为静态。 |
完成 |
2 |
查询包括:选择列表聚合 GROUP BY UNION DISTINCT HAVING |
变为静态。 |
变为静态。 |
变为静态。 |
完成 |
3 |
查询生成内部工作表,例如 ORDER BY 的列没有被索引覆盖。 |
变为键集。 |
|
变为键集。 |
5 |
4 |
查询引用链接服务器中的远程表。 |
变为键集。 |
|
变为键集。 |
5 |
5 |
查询至少引用了一个没有唯一索引的表。仅适用于 Transact-SQL 游标。 |
|
变为静态。 |
|
完成 |
注意: |
---|
快进游标不能转换。 |
注意: |
---|
如果所有基都没有唯一的索引,或者如果查询没有直接返回基表的键列,才执行键集和动态游标的转换。例如,如果查询包含聚合函数或集合运算符。 |
请参阅
其他资源
Implicit Cursor Conversions (ODBC)