Instrukcje: określanie kierunku parametru przy użyciu sterownika SQLSRV

Pobieranie sterownika PHP

W tym temacie opisano sposób używania sterownika SQLSRV do określania kierunku parametru podczas wywoływania procedury składowanej. Kierunek parametru jest określany podczas konstruowania tablicy parametrów (krok 3), która jest przekazywana do sqlsrv_query lub sqlsrv_prepare.

Aby określić kierunek parametru

  1. Zdefiniuj zapytanie Transact-SQL, które wywołuje procedurę składowaną. Użyj znaków zapytania (?) zamiast parametrów, które mają być przekazywane do procedury składowanej. Na przykład ten ciąg wywołuje procedurę składowaną (UpdateVacationHours), która akceptuje dwa parametry:

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

    Uwaga / Notatka

    Zalecaną praktyką jest wywoływanie procedur przechowywanych za pomocą składni kanonicznej. Więcej informacji o składni kanonicznej można znaleźć w Wywołaniach procedur.

  2. Zainicjuj lub zaktualizuj zmienne PHP odpowiadające symbolom zastępczym w zapytaniu Transact-SQL. Na przykład następujący kod inicjuje dwa parametry procedury składowanej UpdateVacationHours:

    $employeeId = 101;  
    $usedVacationHours = 8;  
    

    Uwaga / Notatka

    Nie można używać zmiennych zainicjowanych lub zaktualizowanych na null, DateTime lub typy strumieniowe jako parametry wyjściowe.

  3. Użyj zmiennych PHP z kroku 2, aby utworzyć lub zaktualizować tablicę wartości parametrów, które odpowiadają kolejno symbolom zastępczym parametrów w ciągu Transact-SQL. Określ kierunek dla każdego parametru w tablicy. Kierunek każdego parametru jest określany na jeden z dwóch sposobów: domyślnie (dla parametrów wejściowych) lub przy użyciu stałych SQLSRV_PARAM_* (dla parametrów wyjściowych i dwukierunkowych). Na przykład poniższy kod określa parametr $employeeId jako parametr wejściowy i parametr $usedVacationHours jako parametr dwukierunkowy:

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

    Aby zrozumieć składnię określania kierunku parametru ogólnie, załóżmy, że $var 1, $var 2 i $var 3 odpowiadają odpowiednio parametrom wejściowym, wyjściowym i dwukierunkowym. Kierunek parametru można określić na jeden z następujących sposobów:

    • Niejawnie określ parametr wejściowy, jawnie określ parametr wyjściowy i jawnie określ dwukierunkowy parametr:

      array(   
             array($var1),  
             array($var2, SQLSRV_PARAM_OUT),  
             array($var3, SQLSRV_PARAM_INOUT)  
             );  
      
    • Jawnie określ parametr wejściowy, jawnie określ parametr wyjściowy i jawnie określ dwukierunkowy parametr:

      array(   
             array($var1, SQLSRV_PARAM_IN),  
             array($var2, SQLSRV_PARAM_OUT),  
             array($var3, SQLSRV_PARAM_INOUT)  
             );  
      
  4. Wykonaj zapytanie przy użyciu sqlsrv_query lub sqlsrv_prepare i sqlsrv_execute. Na przykład poniższy kod używa $conn połączenia do wykonania zapytania $tsql z wartościami parametrów określonymi w $params:

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