MSSQL Procedure rückgabe Parameter? Wie gehts?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MSSQL Procedure rückgabe Parameter? Wie gehts?

    Hallo zusammen.

    Ich möchte mit PHP eine Prozedur aufrufen, jedoch erhalte ich keinen rückgabe Wert.

    Im SQL Query Analyzer mache ich das so:

    declare @Nummer varchar(20)
    select @Nummer = MAX(Nummer) FROM DRRequests WHERE ART = 1
    print @Nummer
    exec sp_IncString @Nummer OUTPUT
    print @Nummer
    dann ist @Nummer der neue ausgegebene Wert.

    Im PHP habe ich das so versucht:

    PHP-Code:
    $DRRequestArt 1

    $sql="SELECT MAX(Nummer)FROM DRRequests WHERE ART = $DRRequestArt";
    $resultmssql_query($sql) or die(mssql_error());
    $Nummer mssql_fetch_array($result);
    echo 
    $Nummer[0];
    $SQL "exec sp_IncString $Nummer[0]";
    $RES mssql_query($SQL);
    echo 
    $Nummer[0]; 
    jedoch kommt bei mir kein Ausgabewert. Ich habe mal das Manual durchgeschaut aber komme trotzdem nicht auf einen grünen Zweig...
    könnt ihr mir einen Tipp geben?


    Freundliche Grüsse

    Gwailu

  • #2
    wie sieht die SP aus?
    Zuletzt geändert von asp2php; 03.08.2004, 13:58.

    Kommentar


    • #3
      Hi asp2php!

      Die Prozedur generiert eine Nummer:

      z.B.

      OF-10002
      und diese wird dann immer höher gezählt. Die anfangsbuchstaben sind jedoch Variabel und es hat bisher immer mit dem MAX wert funktioniert.

      Meine Frage: Wie kann ich eine Variabel von der STP wieder ins PHP zurück holen?
      Im MSSQL funktioniert das ja mit
      @Nummer OUTPUT
      jedoch kann ich im PHP keinen Output definieren weil keine Variabel definiert ist.
      Hättest du ein beispiel für die Ausführung einer Prozedur in PHP mit einem Rückgabewert?

      Kommentar


      • #4
        mit select, was sonst, Bsp.:

        create procedure ...
        ...
        ...
        select @temp1 = max(a) from...
        select @temp2 = max(b) from...
        set @Output = @temp2-@temp1

        /* Rückgabe */
        select @Output as spOutput
        return 0

        Kommentar


        • #5
          hm wir haben uns nicht ganz richtig verstanden:
          Die Prozedur läuft einwandfrei.

          Ich möchte bloss herausfinden wie ich diesen befehl, der im MSSQL Query Analyzer funktioniert

          exec sp_IncString @Nummer OUTPUT
          im PHP coden muss dass ich am Schluss die neue Variable @Nummer habe.

          Ist wahrscheinlich nix grosses aber ich komme bei der syntax erklärung auf php.net echt nicht draus.

          Kommentar


          • #6
            eben nicht wie du dir vorstellst, um an die Werte wie print und return ran zu kommen, brauchst du z.B. in einer MS-Umgebung das CommandObject, bei PHP gibt es IMHO sowas nicht (oder vielleicht über COM habe nich probiert), daher musst du die Rückgabe in deiner SP umbauen, und zwar genau wie oben beschrieben, über select. Ich bestreite ja nicht dass die SP einwandfrei läuft, aber so wie sie ist kannst du in PHP im Moment nicht verwenden

            Kommentar


            • #7
              JUHUUU habs geschafft!! *strahl*


              PHP-Code:
              $DRRequestArt 1

              $sql="SELECT MAX(Nummer)FROM DRRequests WHERE ART = $DRRequestArt";
              $resultmssql_query($sql) or die(mssql_error());
              $Nummer mssql_fetch_array($result);
              echo 
              $Nummer[0];

              $query mssql_init("sp_IncString"$dblink) ;
              mssql_bind($query"@o_Nummer"$Nummer[0], SQLVARCHARTRUEFALSE15);
              $result mssql_execute($query);
              echo 
              $Nummer[0]; 
              Jetz gebe ich oben die Nummer ein (LS-00282: z.B für Lieferschein)
              und unten kommt dann LS-00283 raus.

              Kommentar


              • #8
                nicht schlecht habe mich bisher nicht derart vertieft, da ich keine SP-Aufrufe über PHP brauchte. Habe heute aber was dazu gelernt

                Kommentar

                Lädt...
                X