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にキャストする必要はありません 動的クエリ内