【发布时间】:2013-06-19 13:53:10
【问题描述】:
我正在创建一个带有单个 nvarchar 列的临时表。我有一个返回字符串列表的存储过程。我想在顶部添加一条记录,在底部添加一条记录以及我的存储过程返回的数据。
这是我的 sp 代码 sn-p:
CREATE TABLE #tempData (col1 nvarchar(4000))
INSERT INTO #tempData values('SET IDENTITY_INSERT ['+@table_name+'] ON')
INSERT INTO #tempData EXEC (@Actual_Values)
INSERT INTO #tempData values('SET IDENTITY_INSERT ['+@table_name+'] OFF')
select * from #tempData
DROP TABLE #tempData
预期:
SET IDENTITY_INSERT ['+@table_name+'] ON
records returned from sp
SET IDENTITY_INSERT ['+@table_name+'] OFF
返回:
SET IDENTITY_INSERT ['+@table_name+'] ON
some records returned from sp
SET IDENTITY_INSERT ['+@table_name+'] OFF
remainingrecords returned from sp
为什么存储过程中的所有记录都不按顺序排列。我在哪里解释错了? 请原谅我的提问语言和长度。
【问题讨论】:
-
您不应该期待 OFF 而不是 ON 作为第三个值吗?
-
您如何确定它们“乱序”?如果您的#tempData 表只有一列,而您只是说“SELECT * FROM #tempData”,您是否希望结果按照插入行的顺序返回?这不是 SQL Server 的工作方式——将表视为一袋无序的行。如果您希望能够以某种形式的预期顺序返回数据,请添加一个 IDENTITY 列,并在您选择时按该列排序。
-
为什么要投反对票。我的问题有什么问题?
标签: sql stored-procedures sql-server-2008-r2