Procedimientos: Especificación de la dirección del parámetro con el controlador SQLSRV
En este tema se describe cómo utilizar el controlador SQLSRV para especificar la dirección del parámetro cuando se llama a un procedimiento almacenado. La dirección del parámetro se especifica cuando se crea un parámetro de matriz (paso 3) que se transmite a sqlsrv_query o sqlsrv_prepare.
Pasos para especificar la dirección de parámetro
Defina una consulta de Transact-SQL que llame a un procedimiento almacenado. Utilice signos de interrogación (?) en lugar de los parámetros que se transmiten al procedimiento almacenado. Por ejemplo, esta cadena llama a un procedimiento almacenado (UpdateVacationHours) que acepta dos parámetros:
$tsql = "{call UpdateVacationHours(?, ?)}";
Nota
Se recomienda llamar a procedimientos almacenados mediante sintaxis canónica. Para obtener más información sobre la sintaxis canónica, vea Llamar a un procedimiento almacenado.
Inicialice o actualice las variables PHP de los marcadores de posición en la consulta de Transact-SQL. Por ejemplo, en el siguiente código se inicializan los dos parámetros correspondientes al procedimiento almacenado UpdateVacationHours:
$employeeId = 101; $usedVacationHours = 8;
Nota
Las variables que se inicializan o actualizan a Null, DateTimeo tipos de secuencia no se pueden usar como parámetros de salida.
Use las variables PHP del paso 2 para crear o actualizar una matriz de valores de parámetro que se corresponden, en orden, con los marcadores de posición de la cadena de Transact-SQL. Especifique la dirección de cada parámetro de la matriz. La dirección de cada parámetro se establece de una de estas dos maneras: de forma predeterminada (para los parámetros de entrada) o mediante las constantes *SQLSRV_PARAM_* (para los parámetros de salida y bidireccionales). Por ejemplo, en el siguiente código se especifica el parámetro $employeeId como parámetro de entrada, y el parámetro $usedVacationHours , como un parámetro bidireccional:
$params = array( array($employeeId, SQLSRV_PARAM_IN), array($usedVacationHours, SQLSRV_PARAM_INOUT) );
Para comprender la sintaxis con la que se especifica la dirección del parámetro en general, suponga que $var1, $var2y $var3 corresponden a los parámetros de entrada, salida y bidireccionales, respectivamente. Puede especificar la dirección del parámetro de cualquiera de las maneras siguientes:
Especificar implícitamente el parámetro de entrada, especificar explícitamente el parámetro de salida y especificar explícitamente un parámetro bidireccional:
array( array($var1), array($var2, SQLSRV_PARAM_OUT), array($var3, SQLSRV_PARAM_INOUT) );
Especificar explícitamente el parámetro de entrada, especificar explícitamente el parámetro de salida y especificar explícitamente un parámetro bidireccional:
array( array($var1, SQLSRV_PARAM_IN), array($var2, SQLSRV_PARAM_OUT), array($var3, SQLSRV_PARAM_INOUT) );
Ejecute la consulta con sqlsrv_query o sqlsrv_prepare y sqlsrv_execute. Por ejemplo, en el código siguiente se utiliza la conexión $conn para ejecutar la consulta $tsql con los valores de parámetro especificados en $params:
sqlsrv_query($conn, $tsql, $params);
Consulte también
Procedimientos: Recuperación de los parámetros de salida con el controlador SQLSRV
Procedimientos: Recuperación de los parámetros de entrada y salida con el controlador SQLSRV