Практическое руководство. Указание направления параметров с помощью драйвера SQLSRV
Эта статья описывает использование драйвера SQLSRV для указания направления параметров при вызове хранимой процедуры. Направление параметров указывается при создании массива параметров (шаг 3), который передается sqlsrv_query или sqlsrv_prepare.
Порядок указания направления параметров
Определите запрос Transact-SQL, который вызывает хранимую процедуру. Используйте вопросительные знаки (?) вместо параметров, передаваемых в хранимую процедуру. Например, эта строка вызывает хранимую процедуру (UpdateVacationHours), которая принимает два параметра:
$tsql = "{call UpdateVacationHours(?, ?)}";
Примечание.
Рекомендуется вызывать хранимые процедуры с использованием канонического синтаксиса. Дополнительные сведения о каноническом синтаксисе см. в статье Вызов хранимой процедуры.
Инициализируйте или обновите переменные PHP, которые соответствуют заполнителям в запросе Transact-SQL. Например, следующий код инициализирует два параметра для хранимой процедуры UpdateVacationHours:
$employeeId = 101; $usedVacationHours = 8;
Примечание.
Переменные, которые инициализируются или обновляются с использованием null, DateTimeили типов потоков, нельзя использовать в качестве параметров вывода.
Используйте переменные 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) );
Выполните запрос с использованием sqlsrv_query или sqlsrv_prepare и sqlsrv_execute. Например, следующий код использует соединение $conn для выполнения запроса $tsql со значениями параметров, указанными в $params:
sqlsrv_query($conn, $tsql, $params);
См. также
Практическое руководство. Извлечение параметров вывода с помощью драйвера SQLSRV
Практическое руководство. Извлечение параметров ввода и вывода с помощью драйвера SQLSRV