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



我试图在存储过程中动态地将变量插入SQL Server表中,但是由于语法,我无法完成它。有人可以纠正我在以下代码中做错了什么。谢谢。

我尝试过的代码:

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

您已接近,但是您应该使用一个参数作为值:

SET @SQLStmt1 = N'INSERT INTO TestTable( TableName ) 
                              VALUES(@ResulTableName)';
EXEC sp_executesql @SQLStmt1, N'@ResultTableName NVARCHAR(MAX)', 
                   @ResulTableName = @ResulTableName;

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

您可以通过添加三重引号''来做到这一点这将解决您的问题

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

其背后的原因是,当代码被执行时,动态SQL中的三个报价将成为单个报价。

相关内容

  • 没有找到相关文章

最新更新