[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Dec 2007
    Beiträge
    6

    Frage zum Programmaufruf von PHP aus

    Hallo,
    hab da mal eine Frage zum Programmaufruf aus PHP heraus.

    Mein Problem ist folgendes: Ich würde gerne ein Programm auf der iSeries ausrufen, welches mit ein Benutzerkürzel vorschlägt und wieder zurückgibt.

    Ich weiß, dass ich das Programm über eine Stored Procedure aufrufen muss. Diese wurde auch erzeugt mit dem Befehl:

    Code:
    $proc_query = "CREATE PROCEDURE QTEMP.U00073 (INOUT :VORNAME
    CHAR(15), INOUT :NACHNAME CHAR(15), INOUT :USERR CHAR(3), INOUT :USERK 
    CHAR(3), INOUT :FEHLER CHAR(50)) LANGUAGE RPGLE NOT DETERMINISTIC NO SQL 
    EXTERNAL NAME OFFTES.U00073 PARAMETER STYLE GENERAL";
    Die Prozedur wird dann auch auf dem System erstellt. Danach möchte ich mein Programm aufrufen, welches die 5 Parameter entgegennimmt:

    Code:
    $exec = odbc_exec($db, "CALL QTEMP.U00073('$vorname', '$nachname', '$refu',
     '$user', '$fehlermeldung')");
    Nun bekomme ich aber folgende Fehlermeldung:

    Code:
    Warning: odbc_exec() SQL error: [unixODBC][IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0469 - 
    Attribut IN, OUT oder INOUT für Parameter 1 in Prozedur U00073 in QTEMP ungültig., 
    SQL state S1000 in SQLExecDirect in [...]
    Wo genau liegt mein Fehler?

    Gruß
    David

  2. #2
    Registriert seit
    Dec 2007
    Beiträge
    6
    Hm, nun ist alles so breit geworden, dass ich das nicht mehr editieren kann.

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Vielleicht können keine Werte zurückgegeben werden? Nimm' mal IN anstelle von INOUT. - Moment, du willst ja Werte zurückgeben. Vielleicht geht das so auf diese Art nicht?

  4. #4
    Registriert seit
    Dec 2007
    Beiträge
    6
    Eigentlich sollte es so klappen. Nur hab ich noch irgendwo Fehler, weiß aber nicht welche.

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hier steht etwas zu DB2 und PHP. Suche da einmal nach INOUT. Da steht, daß es anscheinend nicht geht, Parameterwerte zurückzugeben. Der Artikel ist aber auch schon etwas älter (von 2004 oder 2006).

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn du einen Execute direkt ausführst sind automatisch alle Parameter IN.
    Wenn du Returnwerte einer Prozedur haben willst, musst du eine Prepare-Anweisung durchführen und die Paramter explizit vom Typ deklarieren.
    SQL weiß ja sonst nicht, wohin mit den Daten.

    Wie das in PHP geht weiß ich nicht.

    MyCmd = "call myproc parm(?, ?, ...)"
    Für jedes "?" musst du die Paramter zuweisen.
    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

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    falls PHP das nicht kann (was ich nicht weiß), dann bleibt immer noch der Weg über eine UDTF, oder eine Function; bei beiden Varianten kommt man an die Rückgabe über ein normales Select dran. Aber beim Design kriegen meine Nackenhaare jetzt schon Probleme, eine stored Procedure als ExUndHopp Objekt in der QTEMP ...

    D*B

    Zitat Zitat von Pikachu Beitrag anzeigen
    Hier steht etwas zu DB2 und PHP. Suche da einmal nach INOUT. Da steht, daß es anscheinend nicht geht, Parameterwerte zurückzugeben. Der Artikel ist aber auch schon etwas älter (von 2004 oder 2006).
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Hallo,

    also wir verwenden in solchen Fällen nur IN-Parameter und geben für die Output-Felder im SQLRPG-Programm ein Resultset zurück. Dieses Resultset kannst Du ja dann im PHP auslesen. Das funktioniert ohne Probleme.

    Gruß,
    KM

  9. #9
    Registriert seit
    Dec 2007
    Beiträge
    6
    Die Lösung für mein Problem findet man hier: PHP: PDO - Manual .

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Siehst du, Prepare und BindParam waren die benötigten Funktionen.
    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

  11. #11
    Registriert seit
    Dec 2007
    Beiträge
    6
    Ja, aber diese PHP Data Objects kannte ich vorher nicht und dafür mussten wir auch erst was einspielen.

    Vielen Dank für eure Hilfe.

  12. #12
    Registriert seit
    Jan 2003
    Beiträge
    302

    PHP und call via sql procedure

    Zitat Zitat von David Beitrag anzeigen
    Die Lösung für mein Problem findet man hier: PHP: PDO - Manual .
    Hallo David,
    ich habe nun das gleiche Problem und kann als PHP-Neuling
    leider nichts mit "PDO" anfangen.

    Kannst du mir zeigen, wie der PHP-Code dann aussehen muss.

    Danke im Voraus !
    Peet

Similar Threads

  1. Frage zum Befehl STRPCCMD
    By stoerfang in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 24-01-13, 10:27
  2. Frage zu WDSC bzw. CODE400
    By Mr.iSeries in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 02-09-08, 10:16
  3. Antworten: 4
    Letzter Beitrag: 21-01-07, 20:46
  4. Frage zu SQL UserDefinedFunction
    By cbe in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 24-08-06, 17:30
  5. AS/400, PHP, Novell Server
    By Asti in forum NEWSboard Server Software
    Antworten: 3
    Letzter Beitrag: 07-12-05, 14:56

Berechtigungen

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