-
So, danke euch beiden.
ich habe jetzt mal Eure Infos eingepflegt, und bin zu folgenden Funktionierenden Proggi gekommen:
PHP-Code:
d jahr s 2s 0
d qa s 2s 0
d anzahl s 2s 0
c
c/exec sql Set Option SrtSeq = *LangIdShr
c/end-exec
c/exec sql Declare Cursor1 Cursor For
c+ Select Count(Distinct(rswoc)) as anzahl
c+ from grresp
c+ where rsjah = :jahr
c+ and rsqua = :qa
c/end-exec
c/exec sql Close Cursor1
c/end-exec
c eval jahr = 07
c eval qa = 02
c/exec sql Open Cursor1 Using :jahr, :qa
c/end-exec
c/exec sql Fetch Cursor1 Into :anzahl
c/end-exec
c
c Eval *inlr = *On
mir ist auch klar, das ich damit nicht den schönheitspreis gewinnen werde.
@Birgitta
Option CLOSQLCSR = *ENDMOD
hatte ich eingebaut, da ich in einem Programm folgendes Problem hatte:
Dynamisches SQL mit "Select * from kunden where name like 'K%'
bei dem 2. Aufruf mit "Select * from kunden where name like 'S%' hatte ich dann keine Daten, weil er nur noch die Kunden mit "K" im Zugriff hatte. Darum habe ich halt die OPTION eingebaut.
Gruß Ronald
-
In deinem Programm steht der Close noch an falscher Stelle (mit ODP's) hat das noch nichts zu tun.
Wenn ein Select nur 1 Zeile als Ergebnis hat (bei count sehr wahrscheinlich) kannst du das noch abkürzen:
Select Count(Distinct(rswoc)) into :anzahl
c+ from grresp
c+ where rsjah = :jahr
c+ and rsqua = :qa
Übrigens:
Das "USING" beim Open wird ignoriert, da du beim Declare keine Parameter sonder Hostvariablen deklariert hast.
Das Using kannst du dir dann schenken.
Using ist dann erforderlich, wenn man sog. Parametermarker verwendet:
"select ... where rsjah = ? and rsqua = ?".
Diesen dann preparen und dann mit "open ... using ..." öffnen.
-
Danke,
habe es jetzt noch eingekürzt.
Das mit den Parametern habe ich dann glaube ich auch gefressen. Mache ich in Delphi mit durchgriff zur AS/400 ja eigentlich auch so in ähnlicher Form.
Gruß Ronald
-
Hallo,
In deinem Programm steht der Close noch an falscher Stelle (mit ODP's) hat das noch nichts zu tun.
Das Problem bei OPEN und CLOSE ist, dass ein Cursor nicht erneut geöffnet werden kann, wenn er bereits geöffnet ist. Da ein CLOSE eventuell auch mal vergessen wird, ist es am sichersten den Cursor unmittelbar vor dem OPEN (nochmals) zu schließen. War der Cursor zu dem Zeitpunkt geöffnet, wird er geschlossen, war er nicht geöffnet umso besser.
Bei einem Soft- oder Pseudo-Close (also einem Close im embedded SQL oder in einer SQL-Stored Procedure oder User Defined Function) wird kein wiederverwendbarer ODP gelöscht. Ein Pseudo-Close bewirkt lediglich, dass die Daten in den temporären Objekten des ODP beim nächsten Open aktualisiert werden. Über die Compile-Option CLOSQLCSR wird definiert wann ein Hard Close erfolgen soll, also entweder beim Ende der Aktivierungsgruppe oder beim Ende eines Moduls. Je nachdem wie diese Option eingestellt ist, wird der ODP entweder beim Ende des Moduls oder beim Beenden einer Aktivierungsgruppe komplett gelöscht. Im Klartext heißt das, dass bei einem erneuten Aufruf die komplette Optimierung (Full Open) mit allen Konsequenzen erneut ausgeführt werden muss.
@Ronald:
Ich würde das ganze Programm noch wie folgt kürzen:
PHP-Code:
d jahr s 2s 0
d qa s 2s 0
d anzahl s 2s 0
c
c/exec sql Set Option SrtSeq = *LangIdShr
c/end-exec
C Clear Anzahl
c eval jahr = 07
c eval qa = 02
C/Exec SQL
c+ Select Count(Distinct(rswoc))
C+ Into :Anzahl
c+ from grresp
c+ where rsjah = :jahr
c+ and rsqua = :qa
c/end-exec
c Eval *inlr = *On
Birgitta
Similar Threads
-
By olbe in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 24-07-07, 14:48
-
By muadeep in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 28-06-05, 13:17
-
By procher in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 24-01-03, 16:59
-
By Wiezorek in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 16-10-01, 12:03
-
By Ursus in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 13-08-01, 07:05
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