Sql Server SP_EXECUTESQL

时间:2014-07-04 18:39:06

标签: 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 sp_executesql 
          @sql_troca, 
          N '@CD_ITEM char(7)', 
          N ' @cd_item = @cd_item '

但在运行时会出现错误:

  

参数化查询@CD_ITEM char(7)

如何将参数作为字符串传递?或者真的没有可能

1 个答案:

答案 0 :(得分:0)

您的代码正在尝试将文字字符串' @cd_item = @cd_item '作为第一个参数的值传递。第一个参数定义为char(7),您尝试将其传递给20个字符的字符串,这就是您收到错误消息的原因。

但是,将参数长度增加到20不能解决问题;当你真的想要传递一个局部变量的值时,你只是将文字字符串作为第一个参数的值传递。

无法将参数作为字符串传递。这不是sp_executesql的工作方式。