3 Stimmen

iSeries - Aufruf einer gespeicherten SQL-Prozedur aus einem CL-Programm

Wie kann ich eine gespeicherte Prozedur aus einem CL-Programm heraus ausführen? RUNSQLSTM erfordert ein Source-Member, aber ich möchte nur einen Befehl erstellen, damit die Benutzer einfach Variablen übergeben können, so dass dies nicht funktioniert.

5voto

Paul Morgan Punkte 28704

Sie können das Systemprogramm aufrufen QZDFMDB2 und übergeben Sie ihm einen Parameter mit dem auszuführenden SQL-String. In diesem Fall ist der SQL-String der Aufruf Ihrer gespeicherten Prozedur:

  CALL PGM(QZDFMDB2) PARM('CALL PROCEDURE (''XYZ'', ''ABC'')')

Um Ihre Werte zu ersetzen, verwenden Sie eine Variable für den PARM:

  DCL VAR(&CALL) TYPE(*CHAR) LEN(200) 

  CHGVAR VAR(&CALL) 
  VALUE('CALL PROCEDURE (''' *CAT &PARM1 *TCAT ''', ''' *CAT &PARM2 *TCAT ''')')

  CALL PGM(QZDFMDB2) PARM(&CALL)

3voto

Kwebble Punkte 2090

Es gibt möglicherweise 2 Optionen:

Erstellen Sie im CL-Programm ein temporäres Quellmitglied. Konstruieren Sie die SQL-Anweisung mit den angegebenen Parametern, um die gespeicherte Prozedur auszuführen, und schreiben Sie diesen Quellcode in das temporäre Element. Fügen Sie dann einen Aufruf an RUNSQLSTM mit dem generierten Member als Parameter hinzu.

Eine zweite Möglichkeit besteht darin, kein CL-Programm zu erstellen, sondern RPG/COBOL zu verwenden. Durch die Verwendung von Embedded SQL kann die Stored Procedure mit den Parametern ausgeführt werden. Deren Werte sollten vom Befehl an das Programm übergeben werden.

2voto

Mike Wills Punkte 20421

Es gab einmal einen Befehl, den jemand geschrieben hatte und den ich verwendet hatte. Ich kann diesen Hinweis nicht mehr finden, aber ich habe zwei andere Möglichkeiten:

  1. Dieser Artikel verwendet REXX
  2. Dieser Artikel verwendet RPG

Beide enthalten den Quellcode, den Sie benötigen, damit der Befehl funktioniert.

0voto

Mitch Punkte 1

QCMDEXC könnte der Befehl sein, den Sie suchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X