View Full Version : QTEMP - Zugriff
HI!
ich führe ein PGM auf der as400 über ein JAVA-Applet aus, dieses
PGM füllt mir ein file in der QTEMP!
wenn ich nun nach dem PGM aufruf auf diese daten zugreifen will,
ist dies nicht mehr möglich, da der JOB bereits beendet ist.
wie kann ich den JOB am leben halten und auf die daten im
QTEMP verzeichnis zugreifen ??
vielen dank schon mal im voraus,
mfg burton007
Da musst du dir eine andere Lösung ausdenken, da Java auf die Beendigung des Programmes wartet und somit der Job eben verschwindet.
Warum kann das Programm die Daten nicht per Parameter zurückgeben ?
Alternativ wäre die Rückgabe auch als SQL-Cursor, so dass du das Programm als SQL-Procedure aufrufst und die Daten dann zurückbekommt.
Ich kann Fuerchau nur beipflichten. Ich wickle die meisten Berührungen mit 3GL-Programmen auf diese Weise (Stored Procedures) ab.
Die SQL-Prozedur sieht ungefähr so aus:
CREATE PROCEDURE LIB/ALTESPGM (IN PARAM1 CHAR(10))
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
DYNAMIC RESULT SETS 1
BEGIN
DECLARE c1 CURSOR WITH RETURN FOR
SELECT *
FROM QTEMP/OUTPUT;
CALL LIB/ALTES3GL (PARAM1);
OPEN c1;
END
Funktioniert wunderbar (auch mit QTEMP). Wenn man die Prozedur dann für die JDBC-Verbindung aufruft, bekommt wie bei einem SELECT ein ResultSet zurück.
LG Robert
danke für die tolle idee!
aber weißt du ob es einen sql befehl gibt, indem
man gleichzeitig ein CALL und ein SELECT
machen kann (gleicher JOB)??
habe keine sql erfahrung...
mfg burton007
Dass passiert automatisch durch den Aufruf:
select ... => gibt einen Cursor zurück
update/delete/create xxx => wird ausgeführt
call mylib.mypgm (Parm1, Parm2, ...) => Programm/Prozedur wird aufgerufen
Dass passiert automatisch durch den Aufruf:
select ... => gibt einen Cursor zurück
update/delete/create xxx => wird ausgeführt
call mylib.mypgm (Parm1, Parm2, ...) => Programm/Prozedur wird aufgerufen
-> bedeutet dass, das wenn ich in einem pgm ein select ausführe, dass ich
einen cursor zurückbekomme ??
mfg burton007
Nein, bei einem Programm, dass als Prozedur aufgerufen wird, muss ich den geöffneten Cursor auch zurückgeben, sonst passiert da rein gar nichts.
Ich meinte nur, dass mit der Art des SQL-Kommandos eben SQL weiß, was ausgeführt werden soll.