7
votes

Casser en cas de déclaration dans T-SQL

est possible à l'aide de la commande de pause dans la déclaration de cas dans MSSQL?

Parce que la condition est vérifiée que l'expression go code>, au lieu de faire la transition du prochain des cas. SSIP_MIKTAR a 5 ans, SSIP_TESLIM_MIKTAR est 0 et S74MIKTAR est 5 p>

update set ssip_teslim_miktar= ssip_teslim_miktar+
CASE WHEN ssip_miktar<@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR-ssip_miktar
WHEN ssip_miktar<@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR-(ssip_miktar+ssip_teslim_miktar) 
WHEN ssip_miktar=@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR 
WHEN ssip_miktar=@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR-ssip_teslim_miktar
 WHEN ssip_miktar>@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR
 WHEN ssip_miktar>@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR  
END,
@S74MIKTAR=@S74MIKTAR-CASE 
         WHEN  ssip_miktar<@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR-ssip_miktar
         WHEN  ssip_miktar<@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR-(ssip_miktar+ssip_teslim_miktar)
         WHEN  ssip_miktar=@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR
         WHEN  ssip_miktar=@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR-ssip_teslim_miktar
         WHEN  ssip_miktar>@S74MIKTAR AND ssip_teslim_miktar=0 THEN @S74MIKTAR
         WHEN  ssip_miktar>@S74MIKTAR AND ssip_teslim_miktar>0 THEN @S74MIKTAR
                     ELSE 0
      END
where ssip_teslim_miktar<ssip_miktar


1 commentaires

S'il vous plaît regarder suivez .. j'ai écrit mon code comme commentaire.


3 Réponses :


4
votes

Ce n'est pas nécessaire. alors agit efficacement comme un retour ou une pause, la déclaration est donc courte.


3 commentaires

set ssip_teslim_miktar = ssip_teslim_miktar + CASE QUAND ssip_miktar <@ S74MIKTAR ET ssip_teslim_miktar = 0 ALORS @ S74MIKTAR-ssip_miktar QUAND ssip_miktar <@ S74MIKTAR ET ssip_teslim_miktar> 0 ALORS @ S74MIKTAR- (ssip_miktar + ssip_teslim_miktar) QUAND ssip_miktar = @ S74MIKTAR ET ssip_teslim_miktar = 0 ALORS @ S74MIKTAR QUAND ssip_miktar = @ S74MIKTAR ET ssip_teslim_miktar> 0 ALORS @ S74MIKTAR-ssip_teslim_miktar QUAND ssip_miktar> @ S74MIKTAR ET ssip_teslim_miktar = 0 ALORS @ S74MIKTAR QUAND ssip_miktar> @ S74MIKTAR ET ssip_teslim_miktar> 0 ALORS @ S74MIKTAR où ssip_teslim_miktar


Aussi SSIP_MIKTAR = 5, SSIP_TESLIM_MIKTAR = 0 et S74MIKTAR = 5


@bedddin je ne vois aucun fin instruction.



7
votes

Ceci est transactionnel SQL et n'est pas itératif. Il ne nécessite pas une pause, car une seule des clauses quand / else sera évaré.

Essayez ce qui suit: xxx

@Test @Test est seulement jamais 2


1 commentaires

@Phil. Merci. Édité en conséquence.



9
votes

Vous ne devriez pas avoir besoin d'utiliser une pause code> car les déclarations de cas SQL ne tombent pas.

DECLARE @x int

SET @x = 0

SELECT CASE
    WHEN @x = 0 THEN 'zero'     -- Only this line of the expression is evaluated
    WHEN @x <> 0 THEN 'not-zero'
    END


0 commentaires