动态输出 SQL
OUTPUT in Dynamic SQL
以下 sql 查询是我的查询的一部分。这个想法是在结果集上会有一个循环(游标),将记录一条一条地插入另一个 table。它是动态的 sql 因为我不完全知道的原因,但我必须与之合作。为了清楚起见,我省略了光标和许多列名。
DECLARE @db_name VARCHAR(500)
SET @db_name = '[TESTDB].DBO.[TestTable]'
DECLARE @guid UNIQUEIDENTIFIER
SET @guid = '15D372FC-63AF-415B-8404-46A15ABE9488'
DECLARE @sql NVARCHAR(max)
SET @sql = 'INSERT INTO dbo.OtherTable
(
guid,
description
)
SELECT NEWID(),
description
FROM ' + @db_name
DECLARE @result varchar(max)
EXEC sp_executesql @sql,
N'OUTPUT',
OUTPUT;
所以想法是循环结果语句中的记录,并将每行中的数据插入到 OtherTable 中的新行中。将记录插入 OtherTable 后,必须捕获使用 NEWID() 生成的唯一标识符(请注意,它是存储在 varchar(40) 中的 guid),以便可以将其写入另一个 table.
我需要一些帮助。谢谢!
通过您的编辑,整体设置变得更加清晰。如果我理解正确,那么在没有任何动态 SQL 的情况下,查询应该是简单的 INSERT
和 OUTPUT
子句。
INSERT INTO dbo.OtherTable
(
guid,
description
)
OUTPUT inserted.guid AS ID INTO dbo.ThirdTable(ID)
SELECT
NEWID(),
description
FROM dbo.TestTable
;
TestTable
中的行被插入到 OtherTable
中。 NEWID
生成的值通过 INSERT
进入 OtherTable
并通过 OUTPUT
子句进入 ThirdTable
。
使用动态 SQL,您只需将源名称 table 和 运行 与简单的 sp_executesql
连接起来即可构建此字符串,无需任何 OUTPUT
参数。
以下 sql 查询是我的查询的一部分。这个想法是在结果集上会有一个循环(游标),将记录一条一条地插入另一个 table。它是动态的 sql 因为我不完全知道的原因,但我必须与之合作。为了清楚起见,我省略了光标和许多列名。
DECLARE @db_name VARCHAR(500)
SET @db_name = '[TESTDB].DBO.[TestTable]'
DECLARE @guid UNIQUEIDENTIFIER
SET @guid = '15D372FC-63AF-415B-8404-46A15ABE9488'
DECLARE @sql NVARCHAR(max)
SET @sql = 'INSERT INTO dbo.OtherTable
(
guid,
description
)
SELECT NEWID(),
description
FROM ' + @db_name
DECLARE @result varchar(max)
EXEC sp_executesql @sql,
N'OUTPUT',
OUTPUT;
所以想法是循环结果语句中的记录,并将每行中的数据插入到 OtherTable 中的新行中。将记录插入 OtherTable 后,必须捕获使用 NEWID() 生成的唯一标识符(请注意,它是存储在 varchar(40) 中的 guid),以便可以将其写入另一个 table.
我需要一些帮助。谢谢!
通过您的编辑,整体设置变得更加清晰。如果我理解正确,那么在没有任何动态 SQL 的情况下,查询应该是简单的 INSERT
和 OUTPUT
子句。
INSERT INTO dbo.OtherTable
(
guid,
description
)
OUTPUT inserted.guid AS ID INTO dbo.ThirdTable(ID)
SELECT
NEWID(),
description
FROM dbo.TestTable
;
TestTable
中的行被插入到 OtherTable
中。 NEWID
生成的值通过 INSERT
进入 OtherTable
并通过 OUTPUT
子句进入 ThirdTable
。
使用动态 SQL,您只需将源名称 table 和 运行 与简单的 sp_executesql
连接起来即可构建此字符串,无需任何 OUTPUT
参数。