将变量插入存储过程中的SQL Server表

时间:2017-06-06 00:53:05

标签: sql-server stored-procedures sql-server-2012 sql-server-2014 sql-server-2016

我试图在存储过程中动态地将变量插入到SQL Server表中,但由于语法原因我无法完成它。有人可以在下面的代码中纠正我的错误。感谢。

我尝试过的代码:

SET @SQLStmt1 = N'INSERT INTO TestTable (TableName) 
                  VALUES(' + @ResulTableName + N')'
EXEC sp_executesql @SQLStmt1    

2 个答案:

答案 0 :(得分:2)

你很接近,但你应该使用一个参数作为值:

SET @SQLStmt1 = N'INSERT INTO TestTable( TableName ) 
                              VALUES(@ResulTableName)';

EXEC sp_executesql @SQLStmt1, N'@ResultTableName NVARCHAR(MAX)', 
                   @ResulTableName = @ResulTableName;

如果您打印出@SQLStmt1,您会看到单引号不正确。

答案 1 :(得分:-1)

你可以通过添加三重引号'''来实现 这将解决您的问题

blockingButton

背后的原因是,当代码执行时,动态SQL中的三重引号将成为单引号。