Sql Server SP_EXECUTESQL
我正在尝试使用sp_executesql,但我有一个特定的问题,尽管我进行了研究,但我找到了一个可能的解决方案 在SQL脚本的某些部分中,我有以下语句:Sql Server SP_EXECUTESQL,sql,sql-server-2008,Sql,Sql Server 2008,我正在尝试使用sp_executesql,但我有一个特定的问题,尽管我进行了研究,但我找到了一个可能的解决方案 在SQL脚本的某些部分中,我有以下语句: EXECUTE sp_executesql @sql_troca, N '@CD_ITEM char(7)', @cd_item = @cd_item 它是有效的 但与参数一致 @cd_item = @cd_item 我想动态构建,已经有这样的战略声明: EXECUTE s
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)
如何将参数作为字符串传递?或者确实不可能您的代码试图将文本字符串
'@cd\u item=@cd\u item'
作为第一个参数的值传递。第一个参数被定义为char(7)
,您试图向它传递一个20个字符的字符串,这就是为什么会收到错误消息的原因
但是,将参数长度增加到20并不能解决问题;当您实际想要传递局部变量的值时,您将只传递文本字符串作为第一个参数的值
无法将参数作为字符串传递。这不是工作原理 这不是全部的错误信息。。。。请发布您所发现的完整准确的错误。。我理解。。。有没有别的办法让我绕过这件事?尝试使用exec(@sql)所有表单,但没有成功。正如您所理解的,我在运行时构建所有内容。所以我想有一个能处理字符串类型的解决方案。@JoséLuiz:我没见过。您只需将所有参数传递给
sp_executesql
,无论查询是否使用它们。