-
embedded SQL - close cursor
Hallo zusammen.
Ich mache meine ersten Gehversuche mit SQL im RPG.
Funktioniert so weit so gut. In einer FOR-Schleife krieg ich aber den Cursor nicht mehr zu.
For i=1 to n
Fileselect = 'select * from ......'
prepare Filesection from :Fileselect
declare Filecursor cursor for Filesection
open Filecursor using: Variable
Dou SQLCOD = 100
Fetch next from Filecursor into :File_ds
If SQLCOD <> 100
Verarbeitung
endif
close Filecursor
endfor
Wenn ich das PGM beende habe ich das File noch offen - HILFE!
-
Also ich bin jetzt nicht der SQLRPGLE-Spezi, aber bei mir hat beim umwandeln die angabe CloSqlCsr(*ENDMOD) geholfen.
gruß ronald
-
Jo,
oder das Programm in einer eigenen Activisiongroup laufen lassen.
-
c/exec sql
c+ set option closqlcsr=*endmod
c/end-exec
neben weiteren Optionen wie:
commit=*none -- wenn ohne Transaktionen gearbeitet wird
datfmt=*iso -- um sicherzustellen, das Datum-Felder 10-stellig verwendet werden
-
 Zitat von Fuerchau
c/exec sql
c+ set option closqlcsr=*endmod
c/end-exec
neben weiteren Optionen wie:
commit=*none -- wenn ohne Transaktionen gearbeitet wird
datfmt=*iso -- um sicherzustellen, das Datum-Felder 10-stellig verwendet werden
Super, das war´s. Viiiiielen Dank!
Verstehen tu ich´s aber nicht. Im 1. Schleifendurchlauf schließt der close und im 2. nicht mehr. Und was hat das ganze mit einem Datum zu tun?
-
das Datum hat nichts mit dem Cursor zu tun. Sind das denn immer andere Select-Statements die du da verarbeitest???
-
 Zitat von JonnyRico
das Datum hat nichts mit dem Cursor zu tun. Sind das denn immer andere Select-Statements die du da verarbeitest???
Nein! "select * from FILE where ALPHAFELD=?"
In den Schleifendurchläufen wird jeweils ein anderer Inhalt dieses Feldes abgefragt.
-
Dass der Cursor offen bleibt, hat intern was mit Optimierungen zu tun.
Du kannst deine SQL's beschleunigen wenn du statische SQL's verwendest:
declare Filecursor cursor for
select * from FILE where ALPHAFELD=:MYFIELD
MYFIELD wird einfach als RPG-Feld definiert.
Damit sparst du dir den Prepare.
-
Besten Dank.
Dann will ich euch mal nicht weiter aufhalten. Den Tipp mit dem statischen SQL und dem variablen Inhalt wird ich im nächsten Teil testen.
-
 Zitat von Fuerchau
Dass der Cursor offen bleibt, hat intern was mit Optimierungen zu tun.
Du kannst deine SQL's beschleunigen wenn du statische SQL's verwendest:
declare Filecursor cursor for
select * from FILE where ALPHAFELD=:MYFIELD
MYFIELD wird einfach als RPG-Feld definiert.
Damit sparst du dir den Prepare.
Deinen Vorschlag auf statisches SQL zurückzugreifen hab ich versucht:
declare Filecursor cursor for Filesection
open Filecursor
SQLCOD = -514 (kein prepaire durchgeführt) !?
Andere Frage noch:
In der SELECT-Anweisung wurden 2 Tabellen mit LEFT JOIN verbunden.
Jedes Dateifeld einzeln anzusprechen find ich bei großem Umfang nervig. Deshalt "*" und INTO in die externe DS, die ich mit der DDS beschrieben habe. Was aber wenn ich nun 2 Tabellen anspreche?
-
Hi Armin,
das was du da gemacht hast ist ja eher dynamisch als statisch.
Dynamisch:
PHP-Code:
SQLStat = 'Select Kunde From Kundenstamm Where Nummer = ' + VarKDNR
Prepare DynSQL From SQLStat
Declare MyCur for DynSQL
Open MyCur
Statisch:
PHP-Code:
Declare MyCur for
Select Kunde From Kundenstamm Where Nummer = :VarKDNR
Open MyCur
Gruß
Sascha
-
Danke Sascha,
nachdem ich noch CURSOR eingefügt habe, wandelt der Precompile um.
Declare MyCur CURSOR for DynSQL
Jetzt bekomm ich aber den SQLCOD -501. Cursor wurde nicht geöffnet!?
Similar Threads
-
By Rincewind in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-12-06, 13:58
-
By Squall in forum NEWSboard Programmierung
Antworten: 23
Letzter Beitrag: 18-10-06, 12:01
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By e_sichert in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-05-06, 10:47
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