Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Gespeicherte SQL-Prozedur verhindert das Schreiben von Null

Ich bin immer noch etwas verwirrt über Ihre Frage, aber das sollte funktionieren, wie ich es verstehe. Anstelle des ganzen IF -Anweisungen, ziehen Sie in Betracht, in einen einzigen CASE zu wechseln -Anweisung, wobei der Wert standardmäßig auf 0 gesetzt wird. Fügen Sie dann eine Prüfung hinzu, wenn der Wert nicht 0 ist, um etwas zu tun.

DECLARE @Level int
DECLARE @Total int
DECLARE @NewPoint int

SET @Level = 61
SET @Total = 100

SELECT 
  @NewPoint = CASE
                WHEN @Level = 61 AND @Total < 482 THEN 10
                WHEN @Level = 62 AND @Total < 487 THEN 15
                WHEN @Level = 63 AND @Total < 492 THEN 20
                WHEN @Level = 64 AND @Total < 497 THEN 25
                WHEN @Level = 65 AND @Total < 502 THEN 30
                ELSE 0
              END

IF @NewPoint <> 0 
BEGIN
  SELECT 'DO SOMETHING'
END