select @strsql='select @nam=Emp_Name from User_List where Emp_ID='''+@empid+''''
exec sp_executesql @strsql,N'@nam varchar(10) output',@name output

解决方案 »

  1.   

    To j9988(j9988):
        sp_executesql我自己也執行過,不過沒有加output屬性,我按照你那樣修改以後,跟我原來執行報同樣的錯誤:
        Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.    按照你那樣修改的語句如下:
    declare @strsql varchar(100),@empid varchar(15),@name varchar(10)
    select @empid='0000001983'
    select @strsql='select @name=Emp_Name from User_List where Emp_ID='''+@empid+''''
    exec sp_executesql @strsql,N'@name varchar(10) output',@name output
    print @name
      

  2.   

    declare @strsql nvarchar(100),@empid varchar(15),@name varchar(10)
    select @empid='0000001983'
    select @strsql=N'select @name=Emp_Name from User_List where Emp_ID='''+@empid+''''
    exec sp_executesql @strsql,N'@name varchar(10) output',@name output
    print @name
      

  3.   

    sp_executesql存储过程的头两个参数要用ntext,nchar或者nvarchar的数据类型!
      

  4.   

    declare @strsql Nvarchar(100)   ---nvarchar
      

  5.   

    赫赫,IronPromises(铁诺)是對的,j9988(j9988)忘掉了在@strsql前面加N,而我自己也忘掉了在@strsql前面加N,它就不當成Unicode字串了,為了一個N到處去找,罪過,罪過:)
      

  6.   

    你不如直接把STRSQL定义成NVARCHAR, 如果字符串对接,就不要一直加'N'了
      

  7.   

    j9988(j9988):
        你不如直接把STRSQL定义成NVARCHAR, 如果字符串对接,就不要一直加'N'了
                                -----------------有道理
    謝謝兩位,散分!
      

  8.   

    harmfulbug:我上面的@strsql就已经是定义的nvarchar了