$conn=oci_connect("hr","hrpwd","localhost/XE");
if (!$conn) {$m=oci_error();trigger_error(htmlentities($m['message']),E_USER_ERROR);
}$create="CREATE TABLE bind_example(name VARCHAR(20))";$stid=oci_parse($conn,$create);oci_execute($stid);$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;";$stid=oci_parse($conn,$create_pkg);oci_execute($stid);$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
-- Bulk Insert
FORALL i IN INDICES OF c1
INSERT INTO bind_example VALUES (c1(i));
-- Fetch and reverse
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;";$stid=oci_parse($conn,$create_pkg_body);oci_execute($stid);$stid=oci_parse($conn,"BEGIN arraybindpkg1.iobind(:c1); END;");$array= array("one","two","three","four","five");oci_bind_array_by_name($stid,":c1",$array,5, -1,SQLT_CHR);oci_execute($stid);var_dump($array);?>