Compartir vía


Procedimientos: Especificación de la dirección del parámetro con el controlador SQLSRV

Descargar controlador PHP

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

  1. 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.

  2. 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.

  3. 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)  
             );  
      
  4. 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