reto: Stored Procedure aufrufen

Hallo

Wie kann ich mit PHP eine StoredProcedure aufrufen?

Habe im internet leider nichts brauchbares gefunden..

Danke für die Hilfe

  1. Hallo,

    Wie kann ich mit PHP eine StoredProcedure aufrufen?

    Habe im internet leider nichts brauchbares gefunden..

    Du hättest auch besser in der Anleitung zur Datenbank gucken sollen.

    Gruß, Frank

    1. Also unter Oracle?

      1. Hallo!

        Also unter Oracle?

        Nein, in der PHP Hilfe unter Oracle:
        XCV. Oracle functions

        mfg
          frafu

        1. Ich habe nun etwas versucht, aber irgendwie bekomme ich es doch nicht hin..

          <?PHP
            // In diesem Beispiel wird beschrieben wie man eine StoredProcedure aufruft,
            // einen Integer übergibt und diesen wieder ausgibt.

          // Oracle Client muß installiert sein und die extension php_oci8 muß installiert sein!
            // Bei dem Beispiel: ps
            // Host-Name: rechner
            // Port-Nummer: 1521

          // Variablen
            $usr = "Dein User";
            $pwd = "Dein Passwort";
            $sid = "Dienstname";

          // Verbindung zum Oracle-Server herstellen
            $conn = OCILogon ($usr, $pwd, $sid);

          // SoredProcedure t_phpsaveproc(integer) aufrufen
            $stmt = OCIParse($conn, "begin :result := t_phpsaveproc(1); end;");

          // OCIBindByName bindet die Variable result an den Platzhalter $result
            OCIBindByName($stmt, "result", &$result);

          // Commit, hier werden die "Jobs" ausgeführt.
            OCIExecute($stmt);

          // Mit OCIResult wird der Rückgabewert der StoredProcedure aus der Menge in die PHP-Variable $result
          geschrieben
            OCIResult($stmt,$result);

          // Ausgabe des Rückgabewertes
            echo $result;

          // Verbindung zum Oracle-Server schließen
            ocilogoff($conn);
          ?>

          habe dieses Testscript genommen und habe es mit meinen Angaben ausgefüllt. Mein Ausgangsscript sieht ja folgendermassen aus:

          DECLARE
            P_C VARCHAR2(200);
            P_ID NUMBER;
            P_OUT VARCHAR2(200);

          BEGIN
            P_C := '41795849067';
            P_ID := 1;
            P_OUT := NULL;

          DB_KDB.V5 ( P_C, P_ID, P_OUT );

          DBMS_OUTPUT.Put_Line('P_OUT = ' || P_OUT);

          COMMIT;
          END;

          Wie muss ich nun dies in das obige Skript einfügen?

          1. dein testscript ist die oracle-prozedur. diese steht in ORACLE. mit tools wie z.b. TOAD kannst du in oracle diese prozedur bearbeiten.

            die prozedur hat einen namen. diesen mußt du in php benutzen.

            http://www.php-center.de/de-html-manual/ref.oci8.html

            1. <?php
              // by webmaster@remoterealty.com
              $sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname',
              '$lastname', '$company', '$address1', '$address2', '$city', '$state',
              '$postalcode', '$country', :error_code );end;" );

              // This calls stored procedure sp_newaddress, with :address_id being an
              // in/out variable and :error_code being an out variable.
              // Then you do the binding:

              OCIBindByName ( $sth, ":address_id", $addr_id, 10 );
                 OCIBindByName ( $sth, ":error_code", $errorcode, 10 );
                 OCIExecute ( $sth );

              ?>

              Ich habe dieses Beispiel gefunden. Aber was müsste ich nun in meinem Fall wo eintragen? Die Umsetzung verstehe ich nicht ganz. Ich möchte nämlich mit PHP die gleiche Ausgabe wie mit dem ORACLE Script erzeugen.

              1. schreibt deine oracle-prozedur etwas direkt auf ein ausgabemedium? das kann dann nicht funktionieren.
                entweder du leitest die ausgabe um, so daß diese als rückgabe an php erfolgen kann,
                oder du baust eine prozedur, welche die entsprechenden datenzeilen zurück liefert, und bereitest die ausgabe mit php auf.

      2. Also unter Oracle?

        Keine Ahnung, ich weiß ja nicht, welche Datenbank du benutzt. Wenn die Datenbank MySQL heißt, wirst du bei Firma Oracle nicht viel Brauchbares finden, sondern eher auf http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html zurückgreifen möchten.

        Gruß, Frank.