Annotation of embedaddon/php/ext/oci8/tests/array_bind_014.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: oci_bind_array_by_name() and NUMBERs
3: --SKIPIF--
4: <?php
5: $target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
6: require(dirname(__FILE__).'/skipif.inc');
7: ?>
8: --FILE--
9: <?php
10:
11: require dirname(__FILE__).'/connect.inc';
12:
13: $drop = "DROP table bind_test";
14: $statement = oci_parse($c, $drop);
15: @oci_execute($statement);
16:
17: $create = "CREATE table bind_test(name NUMBER)";
18: $statement = oci_parse($c, $create);
19: oci_execute($statement);
20:
21: $create_pkg = "
22: CREATE OR REPLACE PACKAGE ARRAYBINDPKG1 AS
23: TYPE ARRTYPE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
24: PROCEDURE iobind(c1 IN OUT ARRTYPE);
25: END ARRAYBINDPKG1;";
26: $statement = oci_parse($c, $create_pkg);
27: oci_execute($statement);
28:
29: $create_pkg_body = "
30: CREATE OR REPLACE PACKAGE BODY ARRAYBINDPKG1 AS
31: CURSOR CUR IS SELECT name FROM bind_test;
32: PROCEDURE iobind(c1 IN OUT ARRTYPE) IS
33: BEGIN
34: IF NOT CUR%ISOPEN THEN
35: OPEN CUR;
36: END IF;
37: FOR i IN REVERSE 1..5 LOOP
38: FETCH CUR INTO c1(i);
39: IF CUR%NOTFOUND THEN
40: CLOSE CUR;
41: EXIT;
42: END IF;
43: END LOOP;
44: END iobind;
45: END ARRAYBINDPKG1;";
46: $statement = oci_parse($c, $create_pkg_body);
47: oci_execute($statement);
48:
49: for ($i = 1; $i < 6; $i++) {
50: $statement = oci_parse($c, "INSERT INTO bind_test VALUES (".$i.")");
51: oci_execute($statement);
52: }
53:
54: $statement = oci_parse($c, "BEGIN ARRAYBINDPKG1.iobind(:c1); END;");
55: $array = Array();
56: oci_bind_array_by_name($statement, ":c1", $array, 5, -1, SQLT_INT);
57: oci_execute($statement);
58:
59: var_dump($array);
60:
61: echo "Done\n";
62: ?>
63: --EXPECTF--
64: array(5) {
65: [0]=>
66: int(5)
67: [1]=>
68: int(4)
69: [2]=>
70: int(3)
71: [3]=>
72: int(2)
73: [4]=>
74: int(1)
75: }
76: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>