我有以下场景:
我已将查询存储到一个变量中,我想要的是将查询结果传递给另一个变量,但由于出现错误,我似乎遗漏了一些东西。
代码:
SET @sqlCommand= 'SELECT [COLUMN_NAME] FROM [dbo].[Keys] WHERE [CONSTRAINT_TYPE]=''PRIMARY KEY'' AND [TABLE_NAME]='''+ @Table_Name + ''''
SET @Primary_Key_Name= EXECUTE (@sqlCommand)
在我将查询结果传递到变量中的第二个查询中发生错误。
有什么想法吗?
答案 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;