执行语句为变量 为何就报错? 如下exec sp_executesql N'SELECT * FROM  TLFGL_LFRY WHERE AU_CLBZ=@temp'
          , N'@temp tinyint',  @temp='3'
--这个正确 declare @commandTest varchar(1000)
set @commandTest=N'SELECT * FROM  TLFGL_LFRY WHERE AU_CLBZ=@temp'
exec sp_executesql @commandTest, N'@temp tinyint',  @temp='3'
--报错:
--消息 214,级别 16,状态 2,过程 sp_executesql,第 1 行
--过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。

解决方案 »

  1.   

    本帖最后由 roy_88 于 2010-11-30 17:54:57 编辑
      

  2.   

    declare @commandTest nvarchar(1000)--用unicode
      

  3.   


    谢谢像sp_executesql 储存过程 参数必须为 双字节 编码格式,这只是一个规定的特例吗,还是其他过程,或者函数 有规定要用 unicode的?
      

  4.   

    ntext/nchar/nvarchar这三种字符必须用unicode编码格式
      

  5.   

    系统存储过程与函数,为了方便统一,使用nvarchar,为好!