完全看不懂,在说什么!EXEC sp_ExecuteSql  你这个用在这里是什么意思?

解决方案 »

  1.   

    TRY:DECLARE @t1 nvarchar(400) 
    DECLARE @t2 nvarchar(400) 
    DECLARE @t3 nvarchar(400) 
    SET @t3='apple' 
    SELECT @t1=t1 FROM tb
    EXEC SP_ExecuteSql @t1,N'@t3 nvarchar(400)',@t3 nvarchar(400)
      

  2.   

    感谢libin_ftsafe 纠正了原代码第四行的笔误,第四行代码代码应是:SET @t3='apple' 。
    但是,如果执行libin_ftsafe 的最后一行代码:
    EXEC SP_ExecuteSql @t1,N'@t3 nvarchar(400)',@t3 nvarchar(400)
    仍会出现错误提示:
    'nvarchar' 附近有语法错误。
      

  3.   

    DECLARE @t1 nvarchar(400) 
    DECLARE @t2 nvarchar(400) 
    DECLARE @t3 nvarchar(400) 
    SET @t3=’apple’ 
    SELECT  @t1=  t1  FROM  tb  /* 数据表tb仅一条记录、字段t1的值是:set @t2=cast(@t3 as char(100)) */ 
    此时如果执行以下代码能得到正确结果:set @t2=cast(@t3 as char(100)) 
    select @t1 
    但是,如果执行以下代码却会有错误提示:必须声明变量 '@t3'。 
    EXEC sp_ExecuteSql @t1 
    目的是要得这样的方式到@t2的值’apple’,而且@t2的赋值语句保存在数据表中。应该怎样修改代码? 
      

  4.   

    目的是要通过这样的方式得到@t2的值’apple’,而且@t2的赋值语句保存在数据表中。应该怎样修改代码? 
      

  5.   

    目的是要执行以下代码,为@t2赋值:
    set @t2=cast(@t3 as char(100)) 
    但是,此代码保存在数据表tb的t1字段中,从数据表取出t1字段(值是“set @t2=cast(@t3 as char(100)) ”)后,保存在@t3 中,所以最后执行代码:EXEC sp_ExecuteSql @t1 
      

  6.   

    DECLARE @t1 nvarchar(400) 
    DECLARE @t2 nvarchar(400) 
    DECLARE @t3 nvarchar(400) 
    SET @t3='apple' 
    --SELECT @t1=t1 FROM tb
    select @t1 = 'set @t2=cast(@t3 as char(100))'
    EXEC SP_ExecuteSql @t1,N'@t3 nvarchar(400),@t2  nvarchar(400) output',@t3,@t2 output
    select @t2
    --apple
      

  7.   

    感谢Herb2,问题解决了!
    不过,我本意是要用代码SELECT  @t1=  t1  FROM  tb  得到@t1,但是将此代码代替Herb2的select @t1 = 'set @t2=cast(@t3 as char(100))'代码,同样得到正确结果。