1

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

码我曾尝试:

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

回答

2

你是接近的,但你应该使用一个参数的值:如果打印出来@SQLStmt1

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

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

,你会看到单引号是不正确的。

+0

如何做到这一点,如果我在表中有多个列? – Teja

+2

您只需为列添加其他参数。 –

-1

您可以通过添加三引号做“”” 这将解决您的问题

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

背后的原因是,在动态SQL三重引号将成为一个单引号时的代码得到执行。

+1

这是一个不好的做法,在使用接受参数的'sp_executesql'时尤其不必要。 –

相关问题