在存储过程中将变量插入 SQL 服务器 table
Insert variables into a SQL Server table in stored procedure
我试图在存储过程中动态地将变量插入 SQL 服务器 table,但由于语法原因我无法完成它。有人可以纠正我在下面的代码中做错了什么。谢谢
我试过的代码:
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 中的三重引号在代码执行时会变成单引号。
我试图在存储过程中动态地将变量插入 SQL 服务器 table,但由于语法原因我无法完成它。有人可以纠正我在下面的代码中做错了什么。谢谢
我试过的代码:
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 中的三重引号在代码执行时会变成单引号。