表值参数游标顺序

时间:2018-06-18 13:11:29

标签: sql sql-server tsql table-valued-parameters

我传递的是单个字符串列表参数(没有其他选项,必须是一列)。我已经读到TVP上无法保证订单,但我读过的所有文章都是指一个选择声明。如果我在TVP上运行光标,它是否总是从第一个记录读到最后一个?

1 个答案:

答案 0 :(得分:1)

表值参数是一个表,一个临时表。

任何表,包括SQL Server中的临时表都是一组无序的行。

写作时

SELECT Column1 FROM Table1

服务器可以按其选择的任何顺序返回行。它将返回表格的所有行,当然,您无法预测以何种顺序。

如果您需要某些特定订单,则必须指定ORDER BY子句,如下所示:

SELECT Column1 FROM Table1 ORDER BY Column2

这一切都适用于TVP和游标。

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

换句话说,光标将始终从"第一个"记录到"最后"。如果光标的逻辑很重要,那就是定义了什么是"第一个"什么是"最后"您需要添加ORDER BY子句。