Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Exécuter l'expression mathématique et définir la valeur sur variable en SQL

Utiliser une requête paramétrée avec sp_executesql procédure :

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;

Correction également de quelques erreurs :

  1. declare @val1 varchar=100; La taille par défaut sera 1 et @val1 est initialisé avec * pas 100 . Voir Pourquoi cast/convert from int renvoie un astérisque pour plus de détails.
  2. Vous n'avez pas besoin de caster en int à l'intérieur de la requête dynamique.