将查询结果传递给变量

时间:2021-04-22 09:49:26

标签: sql sql-server tsql

我有以下场景:

我已将查询存储到一个变量中,我想要的是将查询结果传递给另一个变量,但由于出现错误,我似乎遗漏了一些东西。

代码:

SET @sqlCommand= 'SELECT [COLUMN_NAME] FROM [dbo].[Keys] WHERE [CONSTRAINT_TYPE]=''PRIMARY KEY'' AND [TABLE_NAME]='''+ @Table_Name + ''''

SET @Primary_Key_Name= EXECUTE (@sqlCommand)

在我将查询结果传递到变量中的第二个查询中发生错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

此处不需要将查询设为动态查询,只需对其进行适当的参数化即可:

SET @Primary_Key_Name = (SELECT COLUMN_NAME
                         FROM dbo.Keys
                         WHERE CONSTRAINT_TYPE = 'PRIMARY KEY'
                           AND TABLE_NAME = @Table_Name);

如果查询可以返回多行,则改用表类型变量,并将数据INSERT放入其中:

INSERT INTO @Primary_Key_Names (COLUMN_NAME)
SELECT COLUMN_NAME
FROM dbo.Keys
WHERE CONSTRAINT_TYPE = 'PRIMARY KEY'
  AND TABLE_NAME = @Table_Name;