Freigeben über


Vorgehensweise: Angeben der Parameterrichtung

In diesem Thema wird beschrieben, wie Sie mit SQL Server-Treiber für PHP beim Aufruf einer gespeicherten Prozedur die Richtung eines Parameters angeben. Beachten Sie, dass die Parameterrichtung angegeben wird, wenn Sie ein Parameterarray (Schritt 3) erstellen, das an sqlsrv_query oder sqlsrv_prepare übergeben wird.

So geben Sie die Parameterrichtung an

  1. Definieren Sie eine Transact-SQL-Abfrage, die eine gespeicherte Prozedur aufruft. Geben Sie Fragenzeichen (?) statt der Parameter an, die an die gespeicherte Prozedur übergeben werden sollen. Beispielsweise wird mit folgender Zeichenfolge eine gespeicherte Prozedur (UpdateVacationHours) aufgerufen, die zwei Parameter akzeptiert:

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

    Hinweis

    Es wird empfohlen, zum Aufruf gespeicherter Prozeduren die kanonische Syntax zu verwenden. 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. Im folgenden Code werden beispielsweise die beiden Parameter für die gespeicherte Prozedur UpdateVacationHours initialisiert:

    $employeeId = 101;
    $usedVacationHours = 8;
    

    Hinweis

    Variablen, die mit null, DateTime oder Streamtypen initialisiert oder aktualisiert werden, können nicht als Ausgabeparameter verwendet werden.

  3. Erstellen oder aktualisieren Sie mit den PHP-Variablen aus Schritt 2 ein Array mit Parameterwerten, die den Parameterplatzhaltern in der Transact-SQL-Abfrage entsprechen und in der gleichen Reihenfolge wie diese angegeben werden müssen. Geben Sie die Richtung der einzelnen Parameter im Array an. Die Richtung der einzelnen Parameter wird folgendermaßen festgelegt: durch die Standardeinstellung (für Eingabeparameter) oder mithilfe der SQLSRV_PARAM_*-Konstanten (für Ausgabeparameter und bidirektionale Parameter). Beispielsweise werden im folgenden Code der $employeeId-Parameter als Eingabeparameter und der $usedVacationHours-Parameter als bidirektionaler Parameter festgelegt:

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

    Zum Verständnis der allgemeinen Syntax für die Angabe der Parameterrichtung nehmen wir an, dass $var1, $var2 und $var3 ein Eingabe-, ein Ausgabe- bzw. ein bidirektionaler Parameter sind. Sie haben folgende Möglichkeiten zum Festlegen der Parameterrichtung:

    • Der Eingabeparameter wird implizit angegeben, der Ausgabeparameter wird explizit angegeben, und ein bidirektionaler Parameter wird explizit angegeben:

      array( 
             array($var1),
             array($var2, SQLSRV_PARAM_OUT),
             array($var3, SQLSRV_PARAM_INOUT)
             );
      
    • Der Eingabeparameter wird explizit angegeben, der Ausgabeparameter wird explizit angegeben, und ein bidirektionaler Parameter wird explizit angegeben:

      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 aus. Beispielsweise wird im folgenden Code die Verbindung $conn verwendet, um die Abfrage $tsql mit den in $params angegebenen Parameterwerten auszuführen:

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

Siehe auch

Aufgaben

Vorgehensweise: Abrufen von Ausgabeparametern
Vorgehensweise: Abrufen von Eingabe-/Ausgabeparametern