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 からキャスト/変換するとアスタリスク 詳細については。int
にキャストする必要はありません 動的クエリ内