oci_bind_array_by_name --
Lie un tableau PHP Ã un tableau Oracle PL/SQL par son nom
Description
bool oci_bind_array_by_name ( resource stmt, string name, array &var_array, int max_table_length [, int max_item_length [, int type]] )
Note :
Cette fonction est disponible depuis OCI8 version 1.2 et PHP version 5.1.2.
oci_bind_array_by_name() lit un tableau PHP
var_array à un marquer Oracle
name, qui pointe vers un tableau PL/SQL.
Il peut être utilisé pour l'entrée ou la sortie, suivant la configuration à l'exécution.
Le paramètre max_table_length définit la longueur
maximale des tableaux d'entrées et de résultats. Le paramètre
max_item_length définit la longueur maximale pour
les éléments du tableau. Si max_item_length n'est pas fourni
ou s'il vaut -1, oci_bind_array_by_name() cherchera l'élément
le plus long dans le tableau d'entrée et l'utilisera en tant que longueur maximale.
Le paramètre type devrait être utilisé pour définir
le type des éléments PL/SQL. Voir la liste des types disponibles ci-dessous.
SQLT_NUM - pour les tableaux de NUMBER.
SQLT_INT - pour les tableaux INTEGER (Note : INTEGER
c'est actuellement un synonyme pour NUMBER(38), mais le type
SQLT_NUM fonctionne dans ce cas même s'ils sont synonymes).
$create_pkg = " CREATE OR REPLACE PACKAGE ARRAYBINDPKG1 AS TYPE ARRTYPE IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER; PROCEDURE iobind(c1 IN OUT ARRTYPE); END ARRAYBINDPKG1;"; $statement = oci_parse($c, $create_pkg); oci_execute($statement);
$create_pkg_body = " CREATE OR REPLACE PACKAGE BODY ARRAYBINDPKG1 AS CURSOR CUR IS SELECT name FROM bind_example; PROCEDURE iobind(c1 IN OUT ARRTYPE) IS BEGIN FOR i IN 1..5 LOOP INSERT INTO bind_example VALUES (c1(i)); END LOOP; IF NOT CUR%ISOPEN THEN OPEN CUR; END IF; FOR i IN REVERSE 1..5 LOOP FETCH CUR INTO c1(i); IF CUR%NOTFOUND THEN CLOSE CUR; EXIT; END IF; END LOOP; END iobind; END ARRAYBINDPKG1;"; $statement = oci_parse($c, $create_pkg_body); oci_execute($statement);