Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Execute a expressão matemática e defina o valor como variável no SQL


Use consulta parametrizada com sp_executesql procedimento:
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;

Também corrigiu alguns erros:
  1. declare @val1 varchar=100; O tamanho padrão será 1 e @val1 é inicializado com * não 100 . Consulte Por que cast/convert from int retorna um asterisco para detalhes.
  2. Você não precisa transmitir para int dentro da consulta dinâmica.