-
EMBEDDED SQL in RPG
Wer hat eine Idee, wie ich mein Problem bzgl. embedded SQL in RPG lösen kann.
Da ich im Bereich SQL ein Anfänger bin, stosse ich auf Probleme, die vermutlich für erfahrerene SQL-Anwender gar keine sind.
Es geht um folgendes:
In einer DECLARE-Anweisung wird ein Select über Felder von 3 Dateien durchgeführt. Dazu gibt es umfangreiche, aber eigentlich nicht schwierige WHERE-Bedingungen, in der Feldinhalte dieser Dateien verglichen werden und Vergleiche mit über UDS im RPG-Programme eingelesenen Feldinhalten erfolgen.
Nach Beendigung des DECLARES frage ich den SQLCOD ab, ob dieser ungleich 0 ist.
Hier bricht das Programm ab mit RNQ0103
"Ergebnis war ein Wert, der für das Ziel zu gross ist".
Bringe ich vorab den Inhalt von SQLCOD mit
Z-ADD in eine andere Variable und lasse mir diese mit DSPLY anzeigen, so hat diese den Wert: 077952576. Diesen Fehler-Code kann ich nirgendswo finden.
Wenn ich vor der Abfrage des SQLCOD diesen auf 0 setzte, so läuft das Programm weiter und das Ergebnis scheint, soweit ich erkennen kann, richtig zu sein.
Ungefähr dieselben Anweisungen als SELECT über STRSQL eingetippt, laufen richtig.
Worauf weist der Code 077952576 hin ?
Ich hoffe, jemand kann mir weiterhelfen.
mfg. Ludger.
-
Hallo Ludger,
wenn Du Dateien in RPG mittels SQL-Verarbeiten willst, musst Du folgende Schritte durchfürhren.
1. Cursor deklarieren
2. Cursor öffnen
3. Daten einlesen
--> erst jetzt wird der SQLCOD gesetzt
4. Cursor schliessen
Statisches SQL:
C/EXEC SQL
C+ Declare $SQLC1 Cursor for
C+ Select ......
C/END-EXEC
C/EXEC SQL
C+ Open $SQLC1
C/END-EXEC
C do *Hival
C/EXEC SQL
C+ Fetch $SQLC1 into SSQL
C/END-EXEC
C if SQLCOD = 100 last Record
C leave
C endif
* C if SQLCOD < 0 Fehler
C eval $Error = 1 Fehler
C leave
C endif
Verarbeitung
C enddo
C/EXEC SQL
C+ Close $SQLC1
C/END-EXEC
B.Hauser
-
Vielen Dank B.Hauser für die prompte und ausführliche Antwort.
Wenn ich dich richtig verstanden habe, so kann der SQLCOD beim DECLARE gar nicht abgefragt werden, sondern erst nach dem FETCH.
Das ist interessant.
Gibt es denn auch Möglichkeiten, einen evtl. SQL-Fehler beim DECLARE zu erkennen oder ist das gar nicht erforderlich ?
mfg. Ludger
-
Beim DECLARE ist das nicht erforderlich, da der PreCompiler bereits einen vollständigen Syntax-Check durchführt.
Andere Fehler KÖNNEN erst zur Laufzeit, sprich nach OPEN bzw. FETCH auftreten (CLOSE nicht vergessen).
Einen DECLARE / OPEN / FETCH / CLOSE benötigst du nicht, wenn der Select nur 1 Datensatz zurück gibt.
In diesem Fall reicht ein:
SELECT F1, F2, F3, ... into :F1, :F2, :F3, ...
Selbst wenn mehrere Sätze erwartet werden, kann eine Struktur verwendet werden:
ISTRU_____DS______10
I_______________1__5_F1
I_______________6_10_F2
:
:
SELECT F1, F2 into STRU ....
Es dürfen allerdings nicht mehr Sätze herauskommen als über die Struktur definiert sind.
Die Sätze können dann über die OCUR-Anweisung angesprochen werden.
Similar Threads
-
By muadeep in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 03-08-06, 13:25
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 18-06-06, 12:14
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By lossin in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 23-08-05, 12:00
-
By Zupfl50 in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 06-10-04, 21:04
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