Поделиться через


Практическое руководство. Указание направления параметров с помощью драйвера SQLSRV

Скачать драйвер PHP

Эта статья описывает использование драйвера SQLSRV для указания направления параметров при вызове хранимой процедуры. Направление параметров указывается при создании массива параметров (шаг 3), который передается sqlsrv_query или sqlsrv_prepare.

Порядок указания направления параметров

  1. Определите запрос Transact-SQL, который вызывает хранимую процедуру. Используйте вопросительные знаки (?) вместо параметров, передаваемых в хранимую процедуру. Например, эта строка вызывает хранимую процедуру (UpdateVacationHours), которая принимает два параметра:

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

    Примечание

    Рекомендуется вызывать хранимые процедуры с использованием канонического синтаксиса. Дополнительные сведения о каноническом синтаксисе см. в статье Вызов хранимой процедуры.

  2. Инициализируйте или обновите переменные PHP, которые соответствуют заполнителям в запросе Transact-SQL. Например, следующий код инициализирует два параметра для хранимой процедуры UpdateVacationHours:

    $employeeId = 101;  
    $usedVacationHours = 8;  
    

    Примечание

    Переменные, которые инициализируются или обновляются с использованием null, DateTimeили типов потоков, нельзя использовать в качестве параметров вывода.

  3. Используйте переменные PHP из шага 2, чтобы создать или обновить массив значений параметров, порядок которых соответствует заполнителям параметров в строке Transact-SQL. Укажите направление для каждого параметра в массиве. Направление передачи каждого параметра определяется одним из двух способов: по умолчанию (для входных параметров) или с помощью констант SQLSRV_PARAM_* (для выходных и двунаправленных). Например, следующий код задает параметр $employeeId в качестве параметра ввода и параметр $usedVacationHours в качестве двунаправленного параметра:

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

    Чтобы лучше понять синтаксис для указания направления параметра, предположим, что $var1, $var2и $var3 соответствуют параметру ввода, параметру вывода и двунаправленному параметру. Направление параметров можно указать любым из следующих способов:

    • Укажите параметр ввода неявным образом, параметр вывода явным образом и двунаправленный параметр явным образом:

      array(   
             array($var1),  
             array($var2, SQLSRV_PARAM_OUT),  
             array($var3, SQLSRV_PARAM_INOUT)  
             );  
      
    • Укажите параметр ввода явным образом, параметр вывода явным образом и двунаправленный параметр явным образом:

      array(   
             array($var1, SQLSRV_PARAM_IN),  
             array($var2, SQLSRV_PARAM_OUT),  
             array($var3, SQLSRV_PARAM_INOUT)  
             );  
      
  4. Выполните запрос с использованием sqlsrv_query или sqlsrv_prepare и sqlsrv_execute. Например, следующий код использует соединение $conn для выполнения запроса $tsql со значениями параметров, указанными в $params:

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

См. также:

Практическое руководство. Извлечение параметров вывода с помощью драйвера SQLSRV

Практическое руководство. Извлечение параметров ввода и вывода с помощью драйвера SQLSRV