sql >> Databáze >  >> RDS >> Sqlserver

Spusťte matematický výraz a nastavte hodnotu na proměnnou v SQL

Použijte parametrizovaný dotaz s sp_executesql postup:

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;

Také opraveny některé chyby:

  1. declare @val1 varchar=100; Výchozí velikost bude 1 a @val1 je inicializován pomocí * ne 100 . Viz Proč cast/convert z int vrací hvězdička podrobnosti.
  2. Nemusíte přenášet do int uvnitř dynamického dotazu.


  1. PGAdmin III nemůže připojit AWS RDS

  2. Symfony Doctrine Migrations, jak mohu použít více správců entit

  3. AutoCompleteTextView s daty MySQL

  4. Jak změním formátování návratových hodnot v této funkci?