declare @VAR1 ...
declare @V_F1 ...
set @V_F1=...
declare @sql Nvarchar(1000) 
set @sql=N'SELECT @VAR=F1 FROM TEST WHERE F2=@V_F'exec SP_EXECUTESQL@sql,N'@VAR ... output,@V_F ... input',@VAR1 output,@V_F1 inputprint @VAR1   --取得结果

解决方案 »

  1.   

    declare @sql nvarchar(4000)
    declare  @VAR varchar(10),@V_F  varchar(10)
    select @sql = 'SELECT @VA=F1 FROM TEST WHERE F2=@V' exec sp_executesql  @sql ,N'@VA varchar(10) output,@V  varchar(10)),
    @VAR output,@V_F   
    select @var
      

  2.   

    多说一句
    动态SQL并不能提高SQL效率
      

  3.   

    exec sp_executesql  @sql ,N'@VA varchar(10) output,@V  varchar(10))',
    @VAR output,@V_F   
    select @var
      

  4.   

    sp_executesql  可以替换参数
    但@sql必须是Unicode 字符串如NVARCHAR/NCHAR
      

  5.   

    谢谢各位,问题解决!Varchar(可变长字符串) :
    多说一句
    动态SQL并不能提高SQL效率为何这样说?下次执行时候就不要解析改SQL语句了,难道不提高效率?