-
SQL Fetch
Hallo zusammen,
In einem SQLRPGLE Programm soll eine mit SQL erstellte Tabelle nach dem erstellen mit fetch gelesen werden.
Hier das erstellen der Tabelle:
PHP-Code:
EXEC SQL
create table qtemp/spo1p as (
SELECT xxxxxxx
FROM xx
Where xxxx
) with data ;
Anschließend erfolgt im Programm die Leseroutine
PHP-Code:
EXEC SQL
Declare theSpo Cursor for
SELECT acut#, adate
From qtemp/spo1p ;
EXEC SQL Close theSpo ;
EXEC SQL Open theSpo ;
DoU SqlCode <> *zeros ;
EXEC SQL
Fetch next from theSpo into :wk_acut# ,
:wk_adate ;
arec= arec+ 1;
if SqlCode <> 100 ;
if xxxxx
callp DeleteaSpo( wk_acut#);
anr = anr + 1;
EndIf ;
EndIf ;
EndDo;
EXEC SQL Close theSpo ;
Der Fetch liest nur 2 Datensätze, obwohl ein paar tausend Sätze in der Tabelle vorhanden sind .
Die Felder arec und anr sind nur Zähler.
Muss man nach dem create table with data
vielleicht noch einen Close oder ähnliches machen ?
Gruß
Michael
-
Bist du sicher, dass auch wirklich SQLCOD = 100 auftritt ?
Vielleicht gabs ja einen anderen SQL-Code ab dem 3. Satz (Konvertierungsproblem, NULL-Anzeiger o.ä.).
Man sollte den SQLCOD schon gezielter abfragen:
exec sql fetch ...;
if SQLCOD <> *zero;
leave;
endif;
Schließlich bedeutet
0 = Daten gelesen
100 = EOF
< 0 = Fehler beim Lesen
-
Hi,
ich schäme mich ja soooooooooooo..............
In einer der weiteren Prozeduren wurde ein delete
abgesetzt und da kein Satz für den delete gefunden wurde
kam der sqlcod 100 und beendete die schleife.
Man sollte sich die Programm doch genauer ansehen. Ich war
davon ausgegangen das die Nr unique ist.
Vielen Dank für den Denkanstoß
Gruß
Michael
-
Gerade deshalb mache ich das meist so:
dow 1=1;
exec sql fetch ...;
if SQLCOD <> *zero;
leave;
endif;
:
enddo;
Da passiert sowas dann gar nicht.
-
Hi ,
cool 
schönen Gruß
Michael
-
 Zitat von Fuerchau
Gerade deshalb mache ich das meist so:
dow 1=1;
exec sql fetch ...;
if SQLCOD <> *zero;
leave;
endif;
:
enddo;
Da passiert sowas dann gar nicht.
Ich würde allerdings nicht auf <> 0 abfragen weil:
1. Ein Fehler ausgegeben werden könnte
2. Eine Warnung ausgegeben werden könnte, bei der der Datensatz ausgegeben wird und verarbeitet werden kann.
Besser ist es auf = 100 und < *Zeros abzufragen:
...
Code:
If SQLCOD = 100;
Leave;
ElseIf SQLCOD < *Zeros;
//Fehlerbehandlung
Iter/Leave - whatever
EndIf;
//Verarbeitung
Schöne Grüße von der Common Conference im sonnigen (wenn auch etwas kühlen) Kalifornien.
Birgitta
Similar Threads
-
By AndreasH in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 08-05-15, 13:09
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By JonnyRico in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 09-05-06, 12:25
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