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 --取得结果
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 --取得结果
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
动态SQL并不能提高SQL效率
@VAR output,@V_F
select @var
但@sql必须是Unicode 字符串如NVARCHAR/NCHAR
多说一句
动态SQL并不能提高SQL效率为何这样说?下次执行时候就不要解析改SQL语句了,难道不提高效率?