PDA

View Full Version : SQL-Cursor in geplanten Job nicht möglich?



Curious
12-06-18, 12:24
Hallo,

ich habe mal wieder eine SQL-Frage :).

Mein CL-Script ruft unter anderem mittels RUNSQLSTM eine Stored-Procedure auf. Diese verwendet einen CURSOR, um eine temporäre Tabelle Satz für Satz zu verarbeiten.

Wenn ich das Script manuell aufrufe, läuft alles perfekt.
Wenn ich das Script per Job-Scheduler (WRKJOBSCDE/CHGJOBSCDE) starten lasse, erhalte ich diese Fehlermeldung mit SQLSTATE= -204
Ausgangsmodul . . . . . . . : QSQCLS
Ausgangsprozedur . . . . . : CLEANUP
Anweisung . . . . . . . . . : 6075
Zielmodul . . . . . . . . . : QSQCLS
Zielprozedur . . . . . . . : CLEANUP
Anweisung . . . . . . . . . : 6075
Nachricht . . . : Cursor C_IMPORT nicht geöffnet.

Meine Frage: Was ist anders, wenn ich den Job per Scheduler starte? Muss ich bei der Einrichtung etwas besonderes beachten? Ich habe nur die Bibliotheken hinzugefügt, in der ich meine kompilierten CL-Scripte und SQL-Prozeduren gespeichert habe, sowie die Bibliotheken, in denen die Tabellen liegen (incl. QTEMP für die temp. Tabelle die ich mittels Cursor lese)

Vielen Dank für Eure Unterstützung!
Curious

KingofKning
12-06-18, 14:21
Mit welchem Benutzer läßt Du den Job laufen?

Aber vom Prinzip her sollte es schon passen, wenn Du die Bibs sauber hinterlegst. Du kannst ja mal ein LOGlevel 4 machen dann siehst Du auch was im Joblog.

GG 4372

Curious
12-06-18, 15:42
Hallo King,

ich verwende denselben Benutzer, mit dem auch die interaktive Ausführung funktioniert (meinen Account). Das Joblog ist ganz schön gesprächig, wenn mann es ihm sagt. :)

Problem ist nun gelöst. Ich habe die Liste der Bibliotheken im Script explizit komplett neu aufgebaut und alle Bibliotheken eingetragen, die ich in der interaktiven Sitzung habe. Vorher waren nur die drin, die ich direkt verwendet habe. Möglicherweise gibt es da interne Abhängigkeiten, die ich noch nicht gefunden habe.

Mein Problem ist somit gelöst.

Danke sehr für die schnelle Hilfe!

Fuerchau
12-06-18, 16:22
Per SCDJOB wird nur die Libl der ausgesuchten JOBD verwendet.
Ggf. verweist diese auf den Systemwert QUSRLIBL.
Für deinen Dialogjob verwendest du ggf. ein Startprogramm, dass dir deine LIBL setzt.
Ggf. wird auch eine spezielle JOBD verwendet, die wiederum deine LIBL enthält.

Für die Zukunft solltest du eine JOBD verwenden (falls nicht vorhanden, dann erstellen), die alle Libs enthält, die du brauchst. Diese gibst du beim SCDJOB an.
Eine Änderung der JOBD hat dann sofort Auswirkungen auf den nächsten Start.

Curious
12-06-18, 16:32
Hallo Fuerchau,

das ist ein super Tipp. Werde ich ab sofort grundsätzlich machen. Ich hatte jetzt ein CL-Script geschrieben, dass ich direkt (und mit Bibliotheksname) als erstes aufgerufen hab.
Mit der Job-Description bin ich wesentlich besser dran.

Danke sehr.