PDA

View Full Version : Close SQL Cursor from another Job



woodstock99
01-11-16, 08:17
Hallo,

ist es möglich einen SQL Cursor von einem anderen Job zu schliessen wenn dieser auf Fehler läuft ?

Grund:

In einem SQL Programm wird ein Cursor geöffnet und das PGM läuft dann in der späteren Verarbeitung auf Fehler und man hat die Möglichkeit mit G = *GETIN zu beantworten . Das Problem ist nun aber das er beim wiederholten einsteigen natürlich den Cursor wieder öffnen will :(.

PGM CODE das auf Fehler läuft -

if OpenCursor();
Verarbeitung PGM
endif;
Closecursor();
*inlr = *on


Beantworte ich jetzt einen Fehler mit G und das PGM läuft wieder von vorne los bringt er beim openCursor einen SQL Code zurück und er kommt nicht mehr in die Verarbeitung .
Deshalb meine Frage kann ich einen Cursor von einem anderen Job schliessen damit er nach dem Beantworten mit G *GETIN den Cursor wieder ganz normal öffnen kann ???

Grüsse

BenderD
01-11-16, 09:14
Hallo,

ist es möglich einen SQL Cursor von einem anderen Job zu schliessen wenn dieser auf Fehler läuft ?

Grund:

In einem SQL Programm wird ein Cursor geöffnet und das PGM läuft dann in der späteren Verarbeitung auf Fehler und man hat die Möglichkeit mit G = *GETIN zu beantworten . Das Problem ist nun aber das er beim wiederholten einsteigen natürlich den Cursor wieder öffnen will :(.

PGM CODE das auf Fehler läuft -

if OpenCursor();
Verarbeitung PGM
endif;
Closecursor();
*inlr = *on


Beantworte ich jetzt einen Fehler mit G und das PGM läuft wieder von vorne los bringt er beim openCursor einen SQL Code zurück und er kommt nicht mehr in die Verarbeitung .
Deshalb meine Frage kann ich einen Cursor von einem anderen Job schliessen damit er nach dem Beantworten mit G *GETIN den Cursor wieder ganz normal öffnen kann ???

Grüsse

... je nach Konstellation ginge da mit STRSRVJOB und STRDBG noch was, aber für eine gute Idee halte ich das nicht. Der Murks gehört im Programm geheilt!

D*B

woodstock99
01-11-16, 09:37
ja ich kann den SQLCOD oer debugger umbiegen etc aber wie gesagt gibts irgendeine möglichkeit den cursor eines anderen jobs zu schliessen ?

Robi
01-11-16, 09:45
Bei uns beginnen alle SQL Pgmme mit einem close cursor.
Kommentar: zur sicherheit und für den wiederanlauf.

Das sollte bei euch auch gehen ...

Robi

Fuerchau
01-11-16, 11:47
Ernsthaft gehört natürlich der Fehler behoben.
Zwischen Open und Close das Ganze in eine Monitor-Gruppe einbetten.
Den Cursor ernsthaft "Extern" zu schließen geht leider nur per ENDJOB oder das Programm eben per "C" zum Abbruch bringen.
Einfach per "G" einen Wiederanlauf zu erzwingen birgt eigentlich mehr Gefahren.