Anmelden

View Full Version : Prozeduraufruf aus SQL-Trigger



Schorsch
29-04-05, 06:44
Hallo ans Forum,

heute habe ich ein Problem mit einem Prozeduraufruf aus einem
SQL-Trigger.

Der Trigger schreibt per Insert/Update in mehrere Tabellen. Am
Ende erfolgt der Aufruf eines RPG-Pgm mit Call ....

Bis hier funktionierte alles Prima.

Nun wollte ich VOR dem Aufruf des RPG-Programms
ein Call QSYS.QCMDEXC(....... , 00000000??.00000);
einfügen.
ABER: Wenn ich den Trigger "anhängen" will (RUNSQLSTM ...)
bekomme ich immer folgenden Fehler:

SQL0204 30 1 <PGM-Name> der Art *N in <LIB> nicht gefunden.

Auch andere Versuche mit einem CL-Pgm bzw. ein weiteres
RPG-Pgm brachten die gleiche Fehlermeldung.

Hat jemand einen Tipp für mich?

Schorsch

B.Hauser
29-04-05, 08:16
Hi Schorsch,

es könnte daran liegen, dass die Parameter nicht exakt definiert bzw. übergeben werden.

So werden z.B. Literale wie 'Text irgendwas' immer als VARCHAR interpretiert. QCMDEXC erwartet jedoch CHAR.
Da SQL-Prozeduren und Funktionen überladen werden können, kann dies zu Problemen führen.
Versuche also die Parameter über CAST in das richtige Format zu bringen.

Sollte dies nicht helfen, registriere QCMDEXC und Dein anderes RPG-Programm als externe Stored Procedures.
Dann sollte es funktionnieren.

Birgitta

Schorsch
29-04-05, 08:23
Hallo Birgitta,

vielen Dank für die superschnelle Antwort.
Habe mein PGM mittels Create Procedure "sichtbar"
gemacht und schon hat es funktioniert!

Um QCMDEXC mittels Create Procedure sichtbar
zu machen braucht man doch die genaue Anzahl
und Art der Parameter. Wo finde ich sie bzw. wie
lautete die Create Procedure-Anweisung?

Schorsch

B.Hauser
29-04-05, 08:31
Hallo Schorch,

die Beschreibung des APIs QCMDEXC findest Du unter folgendem Link:
QCMDEXC (http://publib.boulder.ibm.com/infocenter/iseries/v5r3/ic2924/index.htm?info/apis/qcmdexc.htm)

Hier auch ein Beispiel, wie QCMDEXC registriert werden kann:


CREATE PROCEDURE MySchema/ExcClCmd
(IN Command CHAR (32000),
IN CmdLen DEC (15, 05))
LANGUAGE CL
NOT DETERMINISTIC
NO SQL
EXTERNAL NAME QSYS/QCMDEXC
PARAMETER STYLE GENERAL;


Birgitta