PDA

View Full Version : Problem bei Abfrage bei Imbedded SQL



cbe
08-06-05, 15:37
Hallo allerseits,

ich werd bald verrückt:

Ich habe folgendes SQL:

...
C/exec sql
+ declare chkbtc_sq1 dynamic scroll cursor with hold for
+ select * from chkbtc
+ where
+ btcabt like :a12abt
+ order by
+ btcpri, btcdat, btcnr
+ for read only
C/end-exec
*
C/exec sql
+ close chkbtc_sq1
C/end-exec
C/exec sql
+ open chkbtc_sq1
C/end-exec
...

Gelesen wird in Schleife bis EOF:
C/exec sql
+ fetch next from chkbtc_sq1 into
+ :btcnr, :btcapp, :btcabt, :btcpri, :btcdat, :btc
+ :btcaktnr, :btcaktpo, :btcaktty, :btcakttx,
+ :btccrtu, :btccrtd, :btcchgu, :btcchgd
C/end-exec


In der Datei gibt es Sätze mit BTCABT = 'WE' und 'EK'


Bei A12ABT = '%WE% ' findet das Pgm die WE-Sätze, ok.
Bei A12ABT = '%%E% ' findet das Pgm alle Sätze, ok.
Bei A12ABT = '%E% ' findet das Pgm nichts. Warum??
Bei A12ABT = '%% ' findet das Pgm auch nichts. Warum??

Im interaktiven SQL finde ich alle Sätze wie es sein sollte.


Das kann doch nicht so schwer sein...
Kann mir da jemand helfen?

Gruß
Christian

B.Hauser
08-06-05, 16:05
Hallo allerseits,

ich werd bald verrückt:

Ich habe folgendes SQL:

...
C/exec sql
+ declare chkbtc_sq1 dynamic scroll cursor with hold for
+ select * from chkbtc
+ where
+ btcabt like :a12abt
+ order by
+ btcpri, btcdat, btcnr
+ for read only
C/end-exec
*
C/exec sql
+ close chkbtc_sq1
C/end-exec
C/exec sql
+ open chkbtc_sq1
C/end-exec
...

Gelesen wird in Schleife bis EOF:
C/exec sql
+ fetch next from chkbtc_sq1 into
+ :btcnr, :btcapp, :btcabt, :btcpri, :btcdat, :btc
+ :btcaktnr, :btcaktpo, :btcaktty, :btcakttx,
+ :btccrtu, :btccrtd, :btcchgu, :btcchgd
C/end-exec


In der Datei gibt es Sätze mit BTCABT = 'WE' und 'EK'


Bei A12ABT = '%WE% ' findet das Pgm die WE-Sätze, ok.
Bei A12ABT = '%%E% ' findet das Pgm alle Sätze, ok.
Bei A12ABT = '%E% ' findet das Pgm nichts. Warum??
Bei A12ABT = '%% ' findet das Pgm auch nichts. Warum??

Im interaktiven SQL finde ich alle Sätze wie es sein sollte.


Das kann doch nicht so schwer sein...
Kann mir da jemand helfen?

Gruß
Christian

Hast Du bei Deiner Interaktiven SQL-Abrage auch immer die *Blanks hinter dem Prozent-Zeichen oder nicht?
So wie Deine Abfrage im embedded SQL aussieht, wird nach einer bestimmten Anzahl *Blanks am Ende des Feldes gesucht.

Wenn dies nicht so sein sollte hast Du 2 Möglichkeiten
1. Dein Feld a12abt muss eine variable Länge haben und die folgenden *Blanks müssen über %TRIMR entfernt werden.
2. im SQL muss die Funktion RTRIM verwendet werden, um die folgenden *Blanks zu entfernen, also like TRIMR(:A12ABT)

Birgitta

cbe
08-06-05, 16:21
klasse, genau das wars

An sowas kann man Stunden verbringen...

Vielen Dank!