Procédure : spécifier la direction du paramètre

Cette rubrique montre comment utiliser le Pilote SQL Server pour PHP afin de spécifier la direction d'un paramètre lors de l'appel d'une procédure stockée. Notez que la direction du paramètre est spécifiée lorsque vous construisez un tableau de paramètres (étape 3) qui est passé à sqlsrv_query ou à sqlsrv_prepare.

Pour spécifier la direction d'un paramètre :

  1. Définissez une requête Transact-SQL qui appelle une procédure stockée. Utilisez des points d'interrogation (?) à la place des paramètres à passer à la procédure stockée. Par exemple, cette chaîne appelle une procédure stockée (UpdateVacationHours) qui accepte deux paramètres :

    $tsql = "{call UpdateVacationHours(?, ?)}";
    
    Cc626304.note(fr-fr,SQL.90).gifRemarque :
    L'appel des procédures stockées à l'aide de la syntaxe canonique est la pratique recommandée. Pour plus d'informations sur la syntaxe canonique, consultez Appel d'une procédure stockée.

  2. Initialisez ou mettez à jour les variables PHP qui correspondent aux espaces réservés dans la requête Transact-SQL. Par exemple, le code suivant initialise les deux paramètres de la procédure stockée UpdateVacationHours :

    $employeeId = 101;
    $usedVacationHours = 8;
    
    Cc626304.note(fr-fr,SQL.90).gifRemarque :
    Les variables qui ont pour valeur initiale ou mise à jour null, DateTime ou des types de flux de données ne peuvent pas être utilisées en tant que paramètres de sortie.

  3. Utilisez les variables PHP de l'étape 2 pour créer ou mettre à jour un tableau de valeurs de paramètre qui correspondent, respectivement, aux espaces réservés des paramètres dans la chaîne Transact-SQL. Spécifiez la direction de chaque paramètre dans le tableau. La direction de chaque paramètre est déterminée soit par défaut (pour les paramètres d'entrée), soit en utilisant les constantes SQLSRV_PARAM_* (pour les paramètres de sortie et les paramètres bidirectionnels). Par exemple, le code suivant spécifie le paramètre $employeeId en tant que paramètre d'entrée et le paramètre $usedVacationHours en tant que paramètre bidirectionnel :

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

    Pour comprendre la syntaxe servant à spécifier la direction d'un paramètre, supposons que les paramètres $var1, $var2 et $var3 correspondent respectivement à un paramètre d'entrée, un paramètre de sortie et un paramètre bidirectionnel. Vous pouvez spécifier la direction des paramètres de l'une des façons suivantes :

    • Spécifiez implicitement le paramètre d'entrée, spécifiez explicitement le paramètre de sortie et spécifiez explicitement le paramètre bidirectionnel :

      array( 
             array($var1),
             array($var2, SQLSRV_PARAM_OUT),
             array($var3, SQLSRV_PARAM_INOUT)
             );
      
    • Spécifiez explicitement le paramètre d'entrée, spécifiez explicitement le paramètre de sortie et spécifiez explicitement le paramètre bidirectionnel :

      array( 
             array($var1, SQLSRV_PARAM_IN),
             array($var2, SQLSRV_PARAM_OUT),
             array($var3, SQLSRV_PARAM_INOUT)
             );
      
  4. Exécutez la requête avec sqlsrv_query ou avec sqlsrv_prepare et sqlsrv_execute. Par exemple, le code suivant utilise la connexion $conn pour exécuter la requête $tsql avec les valeurs de paramètre spécifiées dans $params :

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

Voir aussi

Tâches

Procédure : récupérer des paramètres de sortie
Procédure : récupérer des paramètres d'entrée/de sortie