Table 值参数游标顺序

Table Value parameter cursor order

我正在传递单个字符串列 table 参数(没有其他选项,必须是一列)。我读过 TVP 不能保证顺序,但我读过的所有文章都指的是 select 语句。如果我 运行 TVP 上的光标,它是否总是从第一条记录读到最后一条?

Table 值参数是一个 table,一个临时的 table。

任何 table,包括 SQL 服务器中的临时 tables 是一组无序的行。

写的时候

SELECT Column1 FROM Table1

服务器可以return行以它选择的任何顺序排列。它会 return 一个 table 的所有行,当然,你只是无法预测是哪个顺序。

如果您需要一些特定的顺序,那么您必须指定 ORDER BY 子句,如下所示:

SELECT Column1 FROM Table1 ORDER BY Column2

所有这些都适用于 TVP 和游标。

如果您定义一个没有 ORDER BY 的游标,它将读取所有行,但以某种未指定的顺序读取,每个 运行 可能会有所不同。如果您需要游标以某种特定顺序处理 TVP 行,则在游标定义的 SELECT 语句中指定 ORDER BY 子句。

换句话说,光标总是从"first"记录读到"last"。如果定义什么是 "first" 什么是 "last" 对游标的逻辑很重要,则需要添加 ORDER BY 子句。