oci_execute Exécute une commande SQL Oracle &reftitle.description; booloci_execute resourcestatement intmodeOCI_COMMIT_ON_SUCCESS Exécute une requête statement précédemment retournée par la fonction oci_parse. Après exécution, les requêtes comme INSERT auront par défaut les données validées (commitées) sur la base de données. Pour les requêtes comme SELECT, l'exécution effectue la logique de la requête. Les résultats de la requête peuvent être récupérés par PHP avec des fonctions comme oci_fetch_array. Chaque requête analysé peut être exécutée plusieurs fois, inutile donc de les analyser de nouveau. Ceci est pratique pour des requêtes de type INSERT lorsque des données y sont liées grâce à la fonction oci_bind_by_name. &reftitle.parameters; statement Un identifiant de requête OCI valide. mode Un second paramètre optionnel peut prendre une des constantes suivantes : Modes d'exécution Constante Description OCI_COMMIT_ON_SUCCESS Validation automatique sur la connexion lorsque la requête a été exécutée avec succès. C'est le comportement par défaut. OCI_DESCRIBE_ONLY Rend les méta-donnes de la requête disponible aux fonctions comme oci_field_name mais ne crée pas de jeu de résultats. Tout appel à des fonctions de récupération comme oci_fetch_array échouera. OCI_NO_AUTO_COMMIT Ne valide pas automatiquement les modifications. Avant PHP 5.3.2 (PECL OCI8 1.4), utilisez la constante OCI_DEFAULT qui est un équivalent de la constante OCI_NO_AUTO_COMMIT.
L'utilisation du mode OCI_NO_AUTO_COMMIT démarre ou continue une transaction. Les transactions sont automatiquement annulées lorsque la connexion est fermée ou lorsque le script se termine. Appelez explicitement la fonction oci_commit pour valider la transaction ou la fonction oci_rollback pour l'annuler. Lors de l'insertion ou de la mise à jour de données, l'utilisation de transactions est fortement recommandée pour garantir la consistance relationnelle des données, mais aussi en raison d'un gain non négligeable de performance. Si le mode OCI_NO_AUTO_COMMIT est utilisé pour toutes opérations y compris les requêtes, et que les fonctions oci_commit et oci_rollback ne sont jamais appelées, OCI8 effectuera une annulation à la fin du script même si les données ont changées. Pour éviter ce comportement, la plupart des scripts n'utilise pas le mode OCI_NO_AUTO_COMMIT pour les requêtes ou les procédures stockées PL/SQL. Assurez-vous de la consistance transactionnelle appropriée de vos applications lors de l'utilisation de la fonction oci_execute avec différents modes dans le même script.
&reftitle.returnvalues; &return.success; &reftitle.examples; Exemple avec <function>oci_execute</function> pour des requêtes \n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "\n"; foreach ($row as $item) { echo " " . ($item !== null ? htmlentities($item, ENT_QUOTES) : "") . "\n"; } echo "\n"; } echo "\n"; ?> ]]> Exemple avec <function>oci_execute</function> sans spécifier de mode ]]> Exemple avec <function>oci_execute</function> et <constant>OCI_NO_AUTO_COMMIT</constant> ]]> Exemple avec <function>oci_execute</function> et différents modes dans le même script ]]> Exemple avec <function>oci_execute</function> et <constant>OCI_DESCRIBE_ONLY</constant> \n"; } ?> ]]> &reftitle.notes; Les transactions sont automatiquement annulées lorsque les connexions sont fermées, ou lorsque le script se termine, suivant ce qui arrive en premier. Appelez explicitement la fonction oci_commit pour valider une transaction. Tout appel à la fonction oci_execute qui utilise le mode OCI_COMMIT_ON_SUCCESS explicitement ou par défaut validera toutes les transactions en cours. Toutes les requêtes Oracle DDL comme CREATE ou DROP valideront toutes les transactions en cours. À cause du fait que la fonction oci_execute envoie généralement la requête à la base de données, la fonction oci_execute peut identifier les erreurs de syntaxe de la requête que la fonction oci_parse aurait pû ne pas détecter. &reftitle.seealso; oci_parse