[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2003
    Beiträge
    17

    Probleme mit Stored Procedures und Parametern

    Hallo zusammen,

    für alle SP-erprobten kommt hier jetzt eine Anfängerfrage, aber ich beiße mir jetzt schon einige Zeit die Zähne daran aus. Ich möchte eine SP erstellen und den Parameter VARHKN übergeben.
    Wenn ich das mache, laufe ich auf einen Fehler (MCH3601), der mir überhaupt nichts sagt. Wenn ich den Parameter in der Deklaration weglasse und statt dessen einen festen Wert dort eintrage, dann funktioniert es:


    CREATE PROCEDURE fatmp/test_cross (IN VARHKN CHAR(8))
    LANGUAGE SQL
    MODIFIES SQL DATA
    BEGIN
    drop table fatmp/trefferx;
    create table fatmp/trefferx
    (
    AID integer not null with default,
    HKNIN CHAR( 8) not null with default,
    HKN CHAR(10) not null with default,
    HKD integer not null with default,
    LFR CHAR( 3) not null with default,
    anz integer not null with default
    );
    insert into fatmp/trefferx
    (aid, hknin, hkn, hkd, lfr, anz)
    select
    aid, VARHKN , hkn, hkd, lfr, 0
    from
    eswadb/adrinf
    where
    hkn = VARHKN ;
    END


    Kann mir irgendjemand helfen? Ich wäre wirklich für jede Hilfe dankbar!!!

    Gruß
    Rico

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

    wie rufst Du die Procedure auf?

    MCH3601 heißt "Zeiger für angegebene Position nicht gesetzt", was darauf hindeutet, dass der Parameter gar nicht erst übergeben wurde.

    Ansonsten komme ich etwas ins Schleudern mit VARHKN. Ist das nicht nur ein Parameterfeld sondern auch noch ein Feld in der Datei adrinf?
    Wenn ja, sollte das Datei-Feld im Insert Statement qualifiziert werden. (Datei.Feld)
    Oder Du benennst den Parameter anders und lädst das Feld gegebenenfalls um.

    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 2003
    Beiträge
    17
    Hallo,

    vielen Dank schon mal für die erste Rückmeldung. Zu Deinen Fragen, also dieses VARHKN ist nur eine Variable. Das gibt es nicht als Feld in der Datei. Ich möchte also beim Insert für die Felder ( aid, hkn, hkd, lfr) die Werte aus der adrinf nehmen und an der Position wo das VARHKN steht, soll halt der übergebene Parameter eingesetzt werden. Ich weiß von CL und dem Querymanager, dass ich die Variablen dort mit "&" vor dem Namen angeben muss um darauf dann z.B. im SQL (QM) zuzugreifen. Das geht hier aber nicht und soll auch nicht, wenn ich das bisher in meinen Nachforschungen richtig verstanden habe.

    Und zu Deiner zweiten Frage, ich rufe die Prozedur wie folgt auf:

    CALL PGM(FATMP/TEST_CROSS) PARM('7GTX0510')

    Meines Erachtens richtig, oder nicht?

    Ich habe hier absolut keine Ahnung mehr...

    Grüße,
    Rico

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das ist falsch, da eine SQL-Prozedur nur mittels SQL aufgerufen werden kann.

    Du benötigst als ein SQL-Statement:

    CALL fatmp/test_cross('7GTX0510')
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Apr 2003
    Beiträge
    17
    Hallo,

    vielen Dank für die Info. In der SQL-Umgebung aufgerufen funktioniert es.

    Jetzt habe ich aber trotzdem noch eine Frage, denn wenn ich die SQL-Prozedur ohne Parameter deklariere und statt dessen einen festen Wert dort unten im SQL eintrage, dann funktioniert der Aufruf so, wie ich ihn oben beschrieben habe (natürlich ohne den Parameter) auf der Befehlszeile ohne zu murren. Nur deshalb bin ich ja auch auf die Idee gekommen, das (auch mit dem Parameter) auf diesem Weg weiterzumachen. Vielleicht kannst Du mir das ja nochmal erklären? Oder ist das nur ein Zufall und eigentlich von IBM gar nicht gewollt?

    Gruß,
    Rico

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nein das ist kein Zufall.
    SQL-Prozeduren mit Parametern wird mindestens ein NULL-Flag-Feld mit übergeben.
    Siehe auch hierzu die Doku für das erstellen externer SQL-Prozeduren.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Stored Procedures unter V5R4
    By PeterKarsten in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 10-11-06, 09:40
  2. Keine Probleme mit Parametern
    By harkne in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 01-06-06, 12:42
  3. DTAQs vs. Stored Procedures
    By us400 in forum NEWSboard Java
    Antworten: 6
    Letzter Beitrag: 21-01-06, 09:46
  4. V5R3: SQL Stored Procedures
    By Atomik in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 15-02-05, 13:53
  5. Wer hat Erfahrung mit Stored Procedures + AS/400?
    By KB in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-04-01, 15:30

Berechtigungen

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