PDA

View Full Version : SQLCOD -501



Bernd Wiezroek
06-04-06, 16:07
Das heisst das der Cursor für den Fetch nicht geöffnet war

c move *blanks austab 100
c exfmt auswa
c bmnr ifgt 0
c hda(1) cat hda(2):1 austab
c else
c hda(1) cat hda(3):1 austab
c endif
* HAUPTPROGRAMM
C/EXEC SQL
C+ PREPARE datwa FROM :austab
C/END-EXEC
C/EXEC SQL
C+ DECLARE datzeig CURSOR FOR datwa
C/END-EXEC
C/EXEC SQL
C+ OPEN datzeig
C/END-EXEC

.....
C SQLCOD DOWNE 100


C/EXEC SQL
C+ FETCH datzeig INTO :MINUD, :baladd, :bdnam, :banzd,
C+ :kDSTAD
C/END-EXEC
C SQLCOD CABEQ 100 AUSG
C SETON 22
C MOVE MINUD MINU

....

** HDA
SELECT ausmnr, aussdt, ausdna, ausber, aussts FROM ausipf
where ausmnr = :bmnr
where ausdt = :bdat


Ich verstehe nicht warum der cursor nicht geöffnet wird.

Das ist für mich der erste versuch mit dynamischem SQL

Mit einer statischen Anweisung funktionierte das Programm.

Fuerchau
06-04-06, 16:45
Der Prepare schlug mit sicherheit fehl, da Hostvariablen im Prepare nicht erlaubt sind.
Du musst den SQL schon komplett zusammenbauen, also die Hostvariablen mit Inhalten auflösen.
Hostvariablen werden bereits zur Compilezeit aufgelöst, was dir das Listing ja zeigen müsste.

Bernd Wiezroek
10-04-06, 06:26
Da hab ich doch das Statische einfach ohne grosses nachdenken Übernommen. Ich werde es Sofort entsprechend umbauen. Danke für die schnelle Antwort.

Bernd