Frage : SQL-FALL MIT WENN

ich kann nicht scheinen, die korrekte Syntax hier zu finden. Ich habe einen Cursor, der einen Wert für ein Feldanruf @ACCATNUM zurückholt. Seine Werte sind zwischen 31 und 6. Ich möchte eine FALL-Aussage haben, die dann die Werte von 6 anderen Feldern abhängig von dem Wert dieses Feldes berechnet. Was ist die korrekte Syntax hier?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
FETCH ZUNÄCHST VON GetJobLinkerCurs IN @JOBNUMBER, @TRANSNMBR, @MASTERTYPE, @MASTERID, @MASTERNAME, @DEBITAMT, @CRDTAMNT, @VCHRNMBR, @DOCTYPE, @DOCDATE, @POSTDATE, @DOCNUMBR, @DOCAMNT, @TRXDSCRN, @DOCSOURCE, @ACTNUMST, @ACCATNUM
	WÄHREND (@@FETCH_STATUS = 0)
	ANFANGEN
	
		/* Bruch beträgt in Kategorien *
		FALL @ACCATNUM VORWÄHLEN
			WENN 31 DANN WENN @DOCTYPE (1.2.3) DANN IM @LABORAMT = IM @LABORAMT + @DEBITAMT IM SONST @LABORAMT = IM @LABORAMT - @CRDTAMNT ENDE
			WENN 32 DANN WENN @DOCTYPE (1.2.3) DANN IM @MATLAMNT = IM @MATLAMNT + @DEBITAMT IM SONST @MATLAMNT = IM @MATLAMNT - @CRDTAMNT ENDE
			WENN 33 DANN WENN @DOCTYPE (1.2.3) DANN IM @DELIVAMT = IM @DELIVAMT + @DEBITAMT IM SONST @DELIVAMT = IM @DELIVAMT - @CRDTAMNT ENDE
			WENN 34 DANN WENN @DOCTYPE (1.2.3) DANN IM @OUTSVCAMT = IM @OUTSVCAMT + @DEBITAMT IM SONST @OUTSVCAMT = IM @OUTSVCAMT - @CRDTAMNT ENDE
			WENN 35 DANN WENN @DOCTYPE (1.2.3) DANN IM @MISCAMNT = IM @MISCAMNT + @DEBITAMT IM SONST @MISCAMNT = IM @MISCAMNT - @CRDTAMNT ENDE
			WENN 6 DANN WENN @DOCTYPE (1.2.3) DANN IM @CIASAMNT = IM @CIASAMNT + @DEBITAMT IM SONST @CIASAMNT = IM @CIASAMNT - @CRDTAMNT ENDE
		ENDE

Antwort : SQL-FALL MIT WENN

Sie können einen Fall nicht hier benutzen, Fall sind nicht ein Aussagenblock redirector wie in einigen Sprachen.
Es wird lediglich als bedingter Ausdruck verwendet.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
ZUNÄCHST VON GetJobLinkerCurs IN @JOBNUMBER, @TRANSNMBR, @MASTERTYPE, @MASTERID, @MASTERNAME, @DEBITAMT HOLEN,
@CRDTAMNT, @VCHRNMBR, @DOCTYPE, @DOCDATE, @POSTDATE, @DOCNUMBR, @DOCAMNT, @TRXDSCRN, @DOCSOURCE, @ACTNUMST, @ACCATNUM
	WÄHREND (@@FETCH_STATUS = 0)
	ANFANGEN
	
		/* Bruch beträgt in Kategorien *
WENN @ACCATNUM=31
	@LABORAMT = FALL EINSTELLEN WENN @DOCTYPE (1.2.3) DANN IM @LABORAMT + @DEBITAMT IM SONST @LABORAMT - @CRDTAMNT ENDE
WENN @ACCATNUM=32
	@MATLAMNT = FALL EINSTELLEN WENN @DOCTYPE (1.2.3) DANN IM @MATLAMNT + @DEBITAMT IM SONST @MATLAMNT - @CRDTAMNT ENDE
. .etc
Weitere Lösungen  
 
programming4us programming4us