-
Ich definiere und öffne den Cursor erst nach der Delete Anweisung, das ist es ja was mich so fuchsig macht .
-
declare cursor wirkt nur zur Compile Zeit, entscheidend ist der open. Wenn der nach dem delete erfolgt und alles wirklich so abläuft wie berichtet (SQL Codes prüfen, wg. der Pferde und der Apotheke), dann ist die Datenbank krank und braucht ein PTF.
D*B
 Zitat von DEVJO
Ich definiere und öffne den Cursor erst nach der Delete Anweisung, das ist es ja was mich so fuchsig macht .
-
Komischerweise ist der SqlCod = 100 (ist das nicht EOF?) was allerdings gar nicht sein kann, da ich weiß (100%) das da noch wenigstens 1 Datensatz vorhanden ist !
Der "Open c1" kommt nach dem "Declare c1" und der wiederum kommt nach dem Delete (in einer SubRoutine).
-
das ist so komisch nicht, der Cursor hat noch den Stand von vor dem Delete, und der Satz ist ja nun wirklich fort...
überprüfe nochmal den Status des Cursors (war der vielleicht noch offen, wurde also vorher geöffnet). Dann leigt ein Fehler in der Datenbank vor.
Als Work around zieht sehr wahrscheinlich den Cursor sensitiv zu machen oder das fetch first row only rauszumachen.
D*B
 Zitat von DEVJO
Komischerweise ist der SqlCod = 100 (ist das nicht EOF?) was allerdings gar nicht sein kann, da ich weiß (100%) das da noch wenigstens 1 Datensatz vorhanden ist !
Der "Open c1" kommt nach dem "Declare c1" und der wiederum kommt nach dem Delete (in einer SubRoutine).
-
Aber wieso hat der Cursor den Stand von vor dem Delete? Wenn ich ihn doch erst danach definiere !
-
Das kann ich nicht machen, weil dann bringt mir die Anweisung ja nichts mehr, brauche halt das niedrigste und höchste Datum. Ich habe jetzt in diesem besonderen Fall einfach noch einen Chain gemacht...... damit klapt es. Ist nicht schön, aber selten
-
der for first row only bei der Deklaration ist lediglich eine Angabe für den Optimizer, Cursor ohne Fetch first und einmal fetch ändert nix an der Logik!
D*B
BTW: den Mix von SQL und RLA, den würde ich eh' bleiben lassen.
 Zitat von DEVJO
Das kann ich nicht machen, weil dann bringt mir die Anweisung ja nichts mehr, brauche halt das niedrigste und höchste Datum. Ich habe jetzt in diesem besonderen Fall einfach noch einen Chain gemacht...... damit klapt es. Ist nicht schön, aber selten 
-
Wo du in der Quelle deine Declare's abgibst ist für die Laufzeit nicht relevant (ausser in einer Prozedur).
Einfacher ist im Übrigen:
c+ select max(BisDatum) from Zeitraum where Gebiet = :Zeitraum_Gebiet and
c+ Ort = :Zeitraum_Ort and
c+ Hotel = :Zeitraum_Hotel and
c+ SaisKZ = :Zeitraum_SaisKZ
Dafür benötigst du noch nicht mal einen Cursor:
c+ select max(BisDatum) into :MyDate
c+ from Zeitraum where Gebiet = :Zeitraum_Gebiet and
c+ Ort = :Zeitraum_Ort and
c+ Hotel = :Zeitraum_Hotel and
c+ SaisKZ = :Zeitraum_SaisKZ
-
Super klappt hervorragend
Danke
Similar Threads
-
By AndreasH in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 08-05-15, 13:09
-
By pedro-zapata in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 11-09-06, 12:34
-
By linguin in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 04-08-06, 10:38
-
By marcel331 in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 11-04-06, 15:47
-
By zannaleer in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 30-01-05, 16:51
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