-1

我正在创建一个带有单个 nvarchar 列的临时表。我有一个返回字符串列表的存储过程。我想在顶部添加一条记录,在底部添加一条记录以及返回我的存储过程的数据。

这是我的 sp 代码片段:

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

为什么存储过程中的所有记录都不按顺序排列。我在哪里解释错了?请原谅我的提问语言和长度。

4

2 回答 2

3

从表中选择时不保证顺序。如果您需要按顺序返回的字符串,则需要添加一个 order 列。你可以试试这个:

CREATE TABLE #tempData (ID int IDENTITY(1,1), 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 ORDER BY ID
DROP TABLE #tempData
于 2013-06-19T13:57:45.870 回答
-1

你也可以试试

select * from #tempData
ORDER BY CASE WHEN RIGHT(col1,2) = 'ON' THEN 0
              WHEN RIGHT(col1,3) = 'OFF' THEN 2
              ELSE 1 END

假设您的 Sp 值不以ONor结尾OFF

于 2013-06-19T14:09:27.433 回答