我有一个由三个变量@ val1,@ val2和@Operator创建的数学表达式。因此,我是否需要按字符串执行查询,并且需要在查询字符串中设置变量的值,如何设置?
我在下面试过
declare @val1 varchar=100; declare @val2 varchar=300; declare @Oper varchar(20)='>'; declare @query varchar(max); declare @Flag int=0; set @query='if(convert(int,'+@val1+')'+@Oper+'convert(int,'+@val2+') set @Flag=1'; exec (@query); print @Flag;
注意: 我正在函数内部使用它。
对sp_executesql过程使用参数化查询:
sp_executesql
DECLARE @val1 VARCHAR(20)= '500'; DECLARE @val2 VARCHAR(20)= '300'; DECLARE @Oper VARCHAR(20)= '>'; DECLARE @query NVARCHAR(MAX); DECLARE @Flag INT= 0; SET @query = 'if ' + @val1 + @Oper + @val2 + ' set @Flag=1'; DECLARE @ParamDefs NVARCHAR(MAX) = N'@Flag int output' EXEC sp_executesql @query, @ParamDefs, @Flag OUTPUT PRINT @Flag;
还纠正了一些错误:
declare @val1 varchar=100;
1
@val1
*
100
int