Partilhar via


Como: Especificar a direção do parâmetro usando o driver SQLSRV

Descarregar o driver PHP

Este tópico descreve como usar o driver SQLSRV para especificar a direção dos parâmetros quando se chama um procedimento armazenado. A direção dos parâmetros é especificada quando se constrói um array de parâmetros (passo 3) que é passado para sqlsrv_query ou sqlsrv_prepare.

Para especificar a direção do parâmetro

  1. Defina uma consulta Transact-SQL que chama um procedimento armazenado. Use pontos de interrogação (?) em vez dos parâmetros a serem passados para o procedimento armazenado. Por exemplo, esta cadeia chama um procedimento armazenado (UpdateVacationHours) que aceita dois parâmetros:

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

    Observação

    Chamar procedimentos armazenados usando sintaxe canónica é a prática recomendada. Para mais informações sobre sintaxe canónica, veja Chamar um Procedimento Armazenado.

  2. Inicialize ou atualize as variáveis PHP que correspondam aos marcadores de posição na consulta Transact-SQL. Por exemplo, o código seguinte inicializa os dois parâmetros para o procedimento armazenado UpdateVacationHours:

    $employeeId = 101;  
    $usedVacationHours = 8;  
    

    Observação

    Variáveis que são inicializadas ou atualizadas para tipos nulo, DateTime ou stream não podem ser usadas como parâmetros de saída.

  3. Use as variáveis PHP do passo 2 para criar ou atualizar um array de valores de parâmetros que correspondam, por ordem, aos marcadores de parâmetros na cadeia de Transact-SQL. Especifique a direção para cada parâmetro no array. A direção de cada parâmetro é determinada de duas formas: por defeito (para parâmetros de entrada) ou usando constantes SQLSRV_PARAM_* (para parâmetros de saída e bidirecionais). Por exemplo, o seguinte código especifica o parâmetro $employeeId como parâmetro de entrada e o parâmetro $usedVacationHours como parâmetro bidirecional:

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

    Para compreender a sintaxe para especificar a direção dos parâmetros em geral, suponha que $var 1, $var 2 e $var 3 correspondem a parâmetros de entrada, saída e bidirecionais, respetivamente. Pode especificar a direção do parâmetro de qualquer uma das seguintes formas:

    • Especificar implicitamente o parâmetro de entrada, especificar explicitamente o parâmetro de saída e especificar explicitamente um parâmetro bidirecional:

      array(   
             array($var1),  
             array($var2, SQLSRV_PARAM_OUT),  
             array($var3, SQLSRV_PARAM_INOUT)  
             );  
      
    • Especificar explicitamente o parâmetro de entrada, especificar explicitamente o parâmetro de saída e especificar explicitamente um parâmetro bidirecional:

      array(   
             array($var1, SQLSRV_PARAM_IN),  
             array($var2, SQLSRV_PARAM_OUT),  
             array($var3, SQLSRV_PARAM_INOUT)  
             );  
      
  4. Execute a consulta com sqlsrv_query ou com sqlsrv_prepare e sqlsrv_execute. Por exemplo, o seguinte código utiliza a ligação $conn para executar a consulta $tsql com valores de parâmetros especificados em $params:

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

Ver também

Como: Recuperar Parâmetros de Saída Usando o Driver SQLSRV

Como: Recuperar Parâmetros de Entrada e Saída Usando o Driver SQLSRV