我试图使用sp_executesql
,但我有一个问题,虽然我研究过,但我发现了一个可能的解决方案。
在SQL脚本的某些部分,我有以下声明:
EXECUTE sp_executesql
@sql_troca,
N '@CD_ITEM char(7)',
@cd_item = @cd_item
它有效。
但符合参数
@cd_item = @cd_item
我想动态构建,已经有了这样的战略声明:
EXECUTE sp_executesql
@sql_troca,
N '@CD_ITEM char(7)',
N ' @cd_item = @cd_item '
但在运行时会出现错误:
参数化查询@CD_ITEM char(7)
如何将参数作为字符串传递?或者真的没有可能
答案 0 :(得分:0)
您的代码正在尝试将文字字符串' @cd_item = @cd_item '
作为第一个参数的值传递。第一个参数定义为char(7)
,您尝试将其传递给20个字符的字符串,这就是您收到错误消息的原因。
但是,将参数长度增加到20不能解决问题;当你真的想要传递一个局部变量的值时,你只是将文字字符串作为第一个参数的值传递。
无法将参数作为字符串传递。这不是sp_executesql
的工作方式。