Anmelden

View Full Version : SQL SELECT Problem ?



a.wojcik
06-02-14, 11:01
Hallo *ALL,

ist das möglich, dass ein SELECT Befehl in einer quasi "Schleife" läuft,
wenn gleichzeitig neue Sätze in die Datei geschrieben werden ?
Erklärung : ein SQLRPG Programm ermittelt die Daten aus der Eingangsdatei und schreibt sie in QTEMP Datei.
Normalerweise läuft es am Tag max. 2 Min, aber früh morgens, wenn die neue Sätze
in die Datei rein kommen, läuft es bis zu 60 Min.
Meine Vermutung ist, dass der SELECT Befehl solange wartet, bis die neuen Sätze geschrieben werden. Stimmt das ?

Gruß

Fuerchau
06-02-14, 11:28
Gib mal im Select am Ende "for read only" an und mach den Cursor ggf. insensitive.

a.wojcik
06-02-14, 12:08
Hallo Fuerchau,hab' vergessen - SELECT ist im RPG embedded, mit EXECUTE IMMEDIATE ausgeführt - kann ich nur "for read only" verwenden, oder ?

Fuerchau
06-02-14, 13:09
"for read only" gehöt zum Select kann also auch bei Execute angegeben werden.
Warum machst du keinen "Cursor for Statement" um dann ganz normal per Open/Fetch/Close zu arbeiten?
Beim Cursor kann man den dann auch als insensitive deklarieren.

a.wojcik
06-02-14, 13:16
wie schon erwähnt die Datei wird gelesen und in QTEMP geschrieben : SQLStm = 'create table QTEMP/QKOPFPF as (select * from LKOPFPF where LKUNDE in (select KUNDE from KUNDEPF) and JJJJ = ' + XJJJJ + ' and MM = ' + XMM + ' and TT = ' + XTT + ' ) WITH DATA ' Nutzt an dieser Stelle 'for read only' was ?

Fuerchau
06-02-14, 13:19
Probiers doch einfach aus.
Aber warum dieser komplizierte Umweg über eine QTEMP-Tabelle und nicht direkt den Select ausführen?

a.wojcik
06-02-14, 13:29
Das Programm sammelt verschiedene Daten aus verschiedenen Dateien (immer auf gleiche Art und Weise mit create table), davon später eine Zusammenfassung (viele Summen, Sortiert) erstellt wird. Problem liegt an einer Datei, die variable Anzahl von Spalten haben muss und das kann ich nur über einen variable gestalteten create/select Befehl erreichen. Ich probiere mit "for read only" aus - bei keiner Verbesserung melde ich mich wieder Morgen. Thanks.