首页 > 解决方案 > 使用 sp_executesql 之类的东西插入多行

问题描述

IF EXISTS (SELECT * FROM SYS.TYPES WHERE NAME = 'TestTableType')
    DROP TYPE TestTableType

CREATE TYPE TestTableType AS TABLE (ID INT)
GO

DECLARE @T TestTableType
INSERT @T SELECT 6*7
INSERT @T SELECT 4*7
INSERT @T SELECT 8

EXEC sp_executesql N'SELECT * from @var', N'@var TestTableType READONLY', @t
GO

此代码返回:

42
28
8

如果允许,这就是我想做的:

EXEC sp_executesql N'INSERT @var    SELECT * from @var', N'@var TestTableType READONLY', @t

那就是将 3 行重新插入 table variable @t。但它必须是 READONLY 并且,当然,不会工作。

有谁知道 SQL Server 2008 Standard 的解决方法或替代选项?

谢谢帕德莱格

标签: sql-server-2008

解决方案


不幸的是,根据这个没有办法用表值参数来做到这一点。

您可以考虑将值写入 ##temp 表,然后可以从下一条语句访问该表。


推荐阅读