对
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 OUTPUTPRINT @Flag;
还纠正了一些错误:
declare @val1 varchar=100;
默认大小将为,1
并@val1
使用*
not初始化100
。有关详细信息,请参见为什么从int进行转换/转换返回星号。- 您无需强制转换为
int
内部动态查询。



