xref: /PHP-8.3/ext/oci8/tests/array_bind_011.phpt (revision a53e5617)
1--TEST--
2oci_bind_array_by_name(), SQLT_CHR, default max_length and empty array
3--EXTENSIONS--
4oci8
5--SKIPIF--
6<?php
7require_once 'skipifconnectfailure.inc';
8?>
9--FILE--
10<?php
11
12require __DIR__.'/connect.inc';
13
14$drop = "DROP table bind_test";
15$statement = oci_parse($c, $drop);
16@oci_execute($statement);
17
18$create = "CREATE table bind_test(name VARCHAR(20))";
19$statement = oci_parse($c, $create);
20oci_execute($statement);
21
22$create_pkg = "
23CREATE OR REPLACE PACKAGE ARRAY_BIND_011_PKG AS
24  TYPE ARRTYPE IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER;
25  PROCEDURE iobind(c1 IN OUT ARRTYPE);
26END ARRAY_BIND_011_PKG;";
27$statement = oci_parse($c, $create_pkg);
28oci_execute($statement);
29
30$create_pkg_body = "
31CREATE OR REPLACE PACKAGE BODY ARRAY_BIND_011_PKG AS
32  CURSOR CUR IS SELECT name FROM bind_test;
33  PROCEDURE iobind(c1 IN OUT ARRTYPE) IS
34    BEGIN
35    FOR i IN 1..5 LOOP
36      INSERT INTO bind_test VALUES (c1(i));
37    END LOOP;
38    IF NOT CUR%ISOPEN THEN
39      OPEN CUR;
40    END IF;
41    FOR i IN REVERSE 1..5 LOOP
42      FETCH CUR INTO c1(i);
43      IF CUR%NOTFOUND THEN
44        CLOSE CUR;
45        EXIT;
46      END IF;
47    END LOOP;
48  END iobind;
49END ARRAY_BIND_011_PKG;";
50$statement = oci_parse($c, $create_pkg_body);
51oci_execute($statement);
52
53$statement = oci_parse($c, "BEGIN array_bind_011_pkg.iobind(:c1); END;");
54
55$array = array();
56
57oci_bind_array_by_name($statement, ":c1", $array, 5, -1, SQLT_CHR);
58
59oci_execute($statement);
60
61var_dump($array);
62
63echo "Done\n";
64?>
65--EXPECTF--
66Warning: oci_bind_array_by_name(): You must provide max length value for empty arrays in %s on line %d
67
68Warning: oci_execute(): ORA-%r(01008|57000)%r: %s in %s on line %d
69array(0) {
70}
71Done
72