Fonctions OCI8
PHP Manual

oci_parse

(PHP 5, PECL OCI8 >= 1.1.0)

oci_parsePrépare une requête SQL avec Oracle

Description

resource oci_parse ( resource $connection , string $sql_text )

Prépare la requête sql_text en utilisant la connexion connection et retourne l'identifiant de requête qui pourra être utilisé avec les fonctions oci_bind_by_name(), oci_execute(), etc..

Les identifiants de requête peuvent être libérés en utilisant la fonction oci_free_statement() ou en définissant la variable correspondante à la valeur NULL.

Liste de paramètres

connection

Un identifiant de connexion Oracle, retourné par la fonction oci_connect(), oci_pconnect() ou oci_new_connect().

sql_text

La requête SQL ou PL/SQL.

Les requêtes SQL ne doivent pas se terminer par un point-virgule (";"). Les requêtes PL/SQL doivent se terminer par un point-virgule (";").

Valeurs de retour

Retourne un gestionnaire de requête en cas de succès, ou FALSE si une erreur survient.

Exemples

Exemple #1 Exemple avec oci_parse()

<?php

$conn 
oci_connect('hr''welcome''localhost/XE');

// Analyse de la requête. Notez qu'il n'y a pas de point-virgule à la fin de la requête SQL
$stid oci_parse($conn'SELECT * FROM employees');
oci_execute($stid);

echo 
"<table border='1'>\n";
while (
$row oci_fetch_array($stidOCI_ASSOC+OCI_RETURN_NULLS)) {
    echo 
"<tr>\n";
    foreach (
$row as $item) {
        echo 
"    <td>" . ($item !== null htmlentities($itemENT_QUOTES) : "") . "</td>\n";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";

?>

Exemple #2 Exemple avec oci_parse() et une requête PL/SQL

<?php

/*
  Avant d'exécuter ce code PHP, vous devez créer une procédure stockée en
  SQL*Plus ou SQL Developer:

  CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
  BEGIN
      p2 := p1 * 2;
  END;

*/

$conn oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$p1 8;

// Lors de l'analyse PL/SQL, il doit y avoir un point-virgule à la fin de la chaîne
$stid oci_parse($conn'begin myproc(:p1, :p2); end;');
oci_bind_by_name($stid':p1'$p1);
oci_bind_by_name($stid':p2'$p240);

oci_execute($stid);

print 
"$p2\n";   // affiche 16

oci_free_statement($stid);
oci_close($conn);

?>

Notes

Note:

Cette fonction ne valide pas la requête sql_text. La seule façon de savoir si la requête sql_text est valide est de l'exécuter.

Note:

Dans les versions de PHP antérieures à la version 5.0.0, vous devez utiliser la fonction ociparse(). Le nom de l'ancienne fonction peut toujours être utilisé dans les versions courantes, malgré le fait qu'il est maintenant obsolète et que nous ne vous le recommandons pas.

Voir aussi


Fonctions OCI8
PHP Manual