[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2004
    Beiträge
    31

    Prozeduraufruf aus SQL-Trigger

    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 der Art *N in 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

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    Parameter

    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Apr 2004
    Beiträge
    31

    Prozeduraufruf aus SQL-Trigger

    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

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo Schorch,

    die Beschreibung des APIs QCMDEXC findest Du unter folgendem Link:
    QCMDEXC

    Hier auch ein Beispiel, wie QCMDEXC registriert werden kann:
    PHP-Code:
    CREATE PROCEDURE MySchema/ExcClCmd    
           
    (IN Command CHAR (32000),        
            
    IN CmdLen  DEC  (1505))       
           
    LANGUAGE CL                      
           NOT DETERMINISTIC                
           NO SQL                           
           EXTERNAL NAME QSYS
    /QCMDEXC       
           PARAMETER STYLE GENERAL

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. SQL Trigger
    By Jenne in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 19-01-07, 09:24
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL Trigger
    By bigmoon in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 14-09-06, 18:26
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. Erstellen Trigger über SQL / Read Funktion
    By GHoffmann in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 07-07-05, 09:18

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •