Annotation of embedaddon/php/ext/oci8/tests/bug37581.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Bug #37581 (oci_bind_array_by_name clobbers input array when using SQLT_AFC, AVC)
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: $p1 = "create or replace package ARRAYBINDPKG1 as
14: type str_array is table of char(2) index by binary_integer;
15: procedure array_bind(in_str in str_array, out_str out string);
16: end ARRAYBINDPKG1;";
17:
18: $p2 = "create or replace package body ARRAYBINDPKG1 as
19: procedure array_bind(in_str in str_array, out_str out string) is
20: begin
21: for i in 1 .. in_str.count loop
22: out_str := in_str(i);
23: end loop;
24: end array_bind;
25: end ARRAYBINDPKG1;";
26:
27: $s1 = oci_parse($c, $p1);
28: $s2 = oci_parse($c, $p2);
29: oci_execute($s1);
30: oci_execute($s2);
31:
32:
33: $stmt = oci_parse($c,'begin ARRAYBINDPKG1.array_bind(:in_arr, :out_str); end;');
34: $strings = array('A','B','C','D','E');
35:
36: oci_bind_array_by_name($stmt,':in_arr',$strings,5,1,SQLT_AFC);
37: oci_bind_by_name($stmt,':out_str',$result,10);
38:
39: oci_execute($stmt);
40: var_dump($strings);
41:
42: oci_execute($stmt);
43: var_dump($strings);
44:
45: echo "Done\n";
46: ?>
47: --EXPECTF--
48: array(5) {
49: [0]=>
50: string(1) "A"
51: [1]=>
52: string(1) "B"
53: [2]=>
54: string(1) "C"
55: [3]=>
56: string(1) "D"
57: [4]=>
58: string(1) "E"
59: }
60: array(5) {
61: [0]=>
62: string(1) "A"
63: [1]=>
64: string(1) "B"
65: [2]=>
66: string(1) "C"
67: [3]=>
68: string(1) "D"
69: [4]=>
70: string(1) "E"
71: }
72: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>