-
?
Der zweite Cursor hat ja keinen Bezug zum ersten.
However, wenn ich Deine Frage richtig verstehe, dann benötigst Du nur den zweiten(!) Cursor, da muss das WHERE und ORDER BY angegeben sein und Du kannst alle gewünschten Sätze nacheinander einlesen.
Wenn das nicht funktioniert, hast Du irgendwo einen anderen fehler!
-
Wieso einen 2. Cursor?
Du musst folgendes vergleichen:
DECLARE MYCURSOR FOR ... = SELECT in Cobol
OPEN MYCURSOR = OPEN in Cobol + START
FETCH = Read next in Cobol
CLOSE = CLOSE in Cobol
In Native IO würdest du doch auch nicht ständig Open/Start/Read/Close machen oder?
Genauso ist das in SQL.
1 mal OPEN
n mal FETCH
1 mal CLOSE
Hier kommt dann die Variable SQLCODE ins Spiel (les doch mal das Handbuch!).
SQLCODE = ZERO => immer alles OK
SQLCODE = 100 => entspricht READ ... AT END ...
SQLCODE < ZERO => entspricht Filestatus, Fehler mit Abbruch in den SQL's
SQLCODE > ZERO => entspricht Filestatus, Fehler mit Warnung in den SQL's, weitermachen möglich
-
Hallo miteinander
Also ich habe jetzt auf nur noch einen Cursor umgestellt.
EXEC SQL
DECLARE CRSCTNO CURSOR FOR
SELECT
T01.SHORTN,
T01.CTNO,
T01.NAMPA1
FROM VMKJF25001 T01
WHERE T01.SHORTN >= :SQL-SHORTN
ORDER BY SHORTN
FOR FETCH ONLY
END-EXEC.
Dann rufe ich diesen Cursor auf und bereits beim ersten Aufruf bringt er mir nicht den ersten, der grösser als das SQL-SHORTN ist, sondern den ersten, der vorhanden ist (a, etc). Wenn ich den ORDER BY wegnehme, bringt er mir den gewünschten, aber die nachfolgenden halt nicht in der Reihenfolge des SHORTN
Ich habe das alles mit Displays entsprechend dokumentiert
-
Dein SQL sieht vollkommen richtig aus!
Der Fehler muss woanders liegen.
Wie ist die Feldbeschreibung von SHORTN?
Wie ist der Feldinhalt von SQL-SHORTN?
Welcher Wert sollte nach dem ersten Lesen in SHORTN stehen?
usw..
-
Also ich sag mal wenn Du das SQL interaktiv aufrufst, dann sollte das Ergebnis das selbe sein wie wenn Du es im Programm machst.
Am besten Du postest mal das Programm, dann kann man sehen ob Du evtl. einen Fehler im nachhinein oder im Vorraus machst.
Evtl. dadurch das Du am Anfang dachtest du bräuchtest 2 Cursors und deswegen arbeitets Du evtl mit den falschen Variablen.
STRDBG kann Dein Freund sein.
Wobei ich so etwas auch immer kapseln würde. Sprich alle Datenbankaufrufe kommen in ein Modul und werden von außen aufgerufen. Dann ist es mir egal ob innendrinn SQL arbeitet oder normales COBOL START / Read Next etc.
GG
-
Als erstes einmal vielen Dank an alle, die mir geholfen haben. Ich bin halt nicht nur im AS400 ein Neuling, sondern habe auch im SQL relativ wenig Erfahrung. Aber jetzt läuft alles korrekt und bringt die richtigen Ergebnisse. Ich denke mal, durch das Cursor-Setzen kann ich nur sequentiell weiterlesen. Ein Aufsetzen vor der aktuellen Position habe ich nur erreicht, indem ich ein Close und Open gemacht habe. Beim SHORTN handelt es sich um ein 12-stelliges Feld, das zudem wahrscheinlich ein Key ist.
LG Günter
-
Noch etwas
Ich bin ja Pragmatiker, d.h. ich habe jetzt einen Loop eingebaut, dass er selbst bis auf den gewünschten liest, erst dann beginnt meine eigentliche Verarbeitung. Das funktioniert auch soweit, obwohl es natürlich nicht schön ist. Wenn ich dann aber auf einen Wert selektieren möchte der vor der aktuellen Position liegt, funktioniert das wieder nicht, lediglich die Selektion auf einen Wert grösser als die momentne Position funktioniert. Ich könnte jetzt natürlich bei einem Wert kleiner als meine Position einen Close und Open machen, denke, dann geht es auch wieder, aber irgendwie sehr unschön !!!!!
Similar Threads
-
By harkne in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 13-01-15, 16:43
-
By hdw2 in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 18-07-14, 14:27
-
By Tschabo in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 16-04-14, 16:20
-
By Robi in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 14-11-13, 16:18
-
By malzusrex in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 27-05-03, 10:05
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks