sql - 表值参数游标顺序
问题描述
我正在传递一个字符串列表参数(没有其他选项,必须是一列)。我读过 TVP 不能保证顺序,但我读过的所有文章都指的是 select 语句。如果我在 TVP 上运行光标,它是否总是从第一条记录读取到最后一条记录?
解决方案
表值参数是一个表,一个临时表。
任何表,包括 SQL Server 中的临时表,都是一组无序的行。
当你写
SELECT Column1 FROM Table1
服务器可以按照它选择的任何顺序返回行。它将返回一个表的所有行,当然,您只是无法预测以哪种顺序。
如果您需要一些特定的顺序,那么您必须指定ORDER BY
子句,如下所示:
SELECT Column1 FROM Table1 ORDER BY Column2
所有这些都适用于 TVP 和光标。
如果您定义一个没有 的游标ORDER BY
,它将读取所有行,但以一些未指定的顺序读取,这可能因每次运行而异。如果您需要游标以某种特定顺序处理 TVP 行,则在游标定义ORDER BY
的语句中指定子句。SELECT
换句话说,光标总是从“第一条”记录读取到“最后一条”。如果定义什么是“第一个”和什么是“最后一个”对游标的逻辑很重要,则需要添加ORDER BY
子句。
推荐阅读
- python - 使用 reticulate 从 R 导入的函数计算梯度时出错
- sql - 如何在 SQL 中显示带有自定义消息的表?
- java - “findById() 不能返回布尔值”错误
- spring-data-jpa - Spring Data派生查询集合反连接
- microsoft-graph-api - OneNote API:始终在 OneDrive 的 notebooks 文件夹下创建笔记本
- reactjs - 如何修复状态映射不是 React Native 中的功能?
- javascript - 使用 Javascript 滑动按钮
- python - 用 3D 替换 2D numpy 数组(元素到向量)
- java - JPA 查询对不在查询中的列抛出“未找到”错误
- javascript - 如何在滚动时更改导航栏的活动类