Freigeben über


Vorgehensweise: Angeben der Parameterrichtung mit dem SQLSRV-Treiber

PHP-Treiber herunterladen

In diesem Thema wird beschrieben, wie der SQLSRV-Treiber verwendet wird, um die Parameterrichtung anzugeben, wenn Sie eine gespeicherte Prozedur aufrufen. Die Parameterrichtung wird angegeben, wenn Sie ein Parameterarray erstellen (Schritt 3), das an sqlsrv_query oder sqlsrv_prepare übergeben wird.

Gehen Sie wie folgt vor, um die Parameterrichtung anzugeben:

  1. Definieren Sie eine Transact-SQL-Abfrage, die eine gespeicherte Prozedur aufruft. Verwenden Sie Fragezeichen („?“) anstelle der Parameter, die an die gespeicherte Prozedur übergeben werden sollen. Diese Zeichenfolge z. B. ruft eine gespeicherte Prozedur auf (UpdateVacationHours), die zwei Parameter akzeptiert:Die Verwendung kanonischer Syntax stellt die empfohlene Vorgehensweise für das Abrufen gespeicherter Prozeduren dar.

    $tsql = "{call UpdateVacationHours(?, ?)}";  
    

    Hinweis

    Die Verwendung kanonischer Syntax stellt die empfohlene Vorgehensweise für das Abrufen gespeicherter Prozeduren dar. Weitere Informationen zur kanonischen Syntax finden Sie unter Aufrufen einer gespeicherten Prozedur.

  2. Initialisieren oder aktualisieren Sie PHP-Variablen, die den Platzhaltern in der Transact-SQL-Abfrage entsprechen. Zum Beispiel aktualisiert folgender Code die zwei in der Prozedur UpdateVacationHours gespeicherten Parameter.

    $employeeId = 101;  
    $usedVacationHours = 8;  
    

    Hinweis

    Variablen, die auf NULL, DateTimeoder Streamtypen aktualisiert oder initialisiert werden, können nicht als Ausgabeparameter verwendet werden.

  3. Verwenden Sie Ihre PHP-Variablen aus Schritt 2, um ein Array von Parameterwerten zu erstellen oder zu aktualisieren. Dieses soll der Reihenfolge der Parameterplatzhalter in der Transact-SQL-Zeichenfolge entsprechen. Geben Sie die Richtung jedes Parameters im Array an. Die Richtung jedes einzelnen Parameters wird auf zwei Arten festgelegt: standardmäßig (für Eingabeparameter) oder mithilfe von SQLSRV_PARAM_*-Konstanten (für Ausgabeparameter und bidirektionale Parameter). Der folgende Code gibt beispielsweise den $employeeId -Parameter als Eingabeparameter und den $usedVacationHours -Parameter als bidirektionaler Parameter an:

    $params = array(  
                     array($employeeId, SQLSRV_PARAM_IN),  
                     array($usedVacationHours, SQLSRV_PARAM_INOUT)  
                    );  
    

    Um die Syntax zum Angeben der Parameterrichtung im Allgemeinen zu verstehen, nehmen Sie an, dass $var1, $var2, und $var3 jeweils den Eingabe-, Ausgabe- und bidirektionalen Parametern entsprechen. Sie können die Richtung des Parameters in einer der folgenden Arten angeben:

    • Geben Sie den Eingabeparameter implizit und den Ausgabeparameter sowie den bidirektionalen Parameter explizit an:

      array(   
             array($var1),  
             array($var2, SQLSRV_PARAM_OUT),  
             array($var3, SQLSRV_PARAM_INOUT)  
             );  
      
    • Geben Sie den Eingabeparameter explizit und den Ausgabeparameter sowie den bidirektionalen Parameter explizit an:

      array(   
             array($var1, SQLSRV_PARAM_IN),  
             array($var2, SQLSRV_PARAM_OUT),  
             array($var3, SQLSRV_PARAM_INOUT)  
             );  
      
  4. Führen Sie die Abfrage mit sqlsrv_query oder mit sqlsrv_prepare und sqlsrv_execute durch. Der folgende Code verwendet beispielsweise die Verbindung $conn zum Ausführen der Abfrage $tsql mit Parameterwerten, die in $paramsangegeben sind:

    sqlsrv_query($conn, $tsql, $params);  
    

Weitere Informationen

Vorgehensweise: Abrufen von Eingabe-/Ausgabeparametern mit dem SQLSRV-Treiber

Gewusst wie: Abrufen von Eingabe- und Ausgabeparametern mit dem SQLSRV-Treiber