这是我想要实现的示例代码,我想在具有一些特定代码变量的表中添加一列。但是,我无法真正掌握sp_executesql如何通过它。任何帮助表示赞赏
DECLARE @SQLQUERY NVARCHAR (max)
DECLARE @Table VARCHAR (200) = 'Table_Name'
DECLARE @Column VARCHAR (200) = 'Column_Name'
DECLARE @Code1 int = 1
DECLARE @Code2 int = 2
DECLARE @Code3 int = 3
SET @SQLQUERY = 'ALTER TABLE' + @Table + 'ADD' @Column
AS CASE WHEN FirstColumn IS NULL THEN @Code1
WHEN SecondColumn IS NULL THEN @Code2
ELSE @Code3
Exec sp_executesql @SQLQUERY
答案 0 :(得分:0)
您需要将alter
语句全部构建为字符串然后执行它,例如您的查询应该是这样的:
SET @SQLQUERY = 'ALTER TABLE ' + @Table + ' ADD ' + @Column +
' AS CASE WHEN FirstColumn IS NULL THEN ' + str(@Code1) +
' WHEN SecondColumn IS NULL THEN ' + str(@Code2) +
' ELSE ' + str(@Code3) + ' END'
注意:我使用了str(@Code1)
,因为它被声明为int
然后你可以正常执行语句
Exec sp_executesql @SQLQUERY
希望这会对你有所帮助
答案 1 :(得分:0)
您需要将查询构建为字符串。
我发现您的查询几乎没有问题:
如果要添加新列,则需要指定列的数据类型。请参阅this
ALTER TABLE Tablecolumn ALTER COLUMN NewColumn NVARCHAR(20)NOT NULL;
表示@ Code1,@ Code2和@ Code3的条件。你想要这个默认值吗?你想要实现什么目标?
答案 2 :(得分:0)
该脚本最终相应地工作:
DECLARE @Code1 int = 1
DECLARE @Code2 int = 2
DECLARE @Code3 int = 3
DECLARE @SQLQUERY NVARCHAR (max)
SET @SQLQUERY = N'ALTER TABLE Table ADD Column
AS CASE WHEN FirstColumn IS NULL THEN' STR(@Code1) +
'WHEN SecondColumn IS NULL THEN' STR(@Code2) +
' ELSE' str(@Code3) + ' END'
Exec sp_executesql @SQLQUERY