1--TEST--
2Bug #27303 (OCIBindByName binds numeric PHP values as characters)
3--SKIPIF--
4<?php
5if (!extension_loaded('oci8')) die ("skip no oci8 extension");
6require(__DIR__."/connect.inc");
7// The bind buffer size edge cases seem to change each DB version.
8preg_match('/.*Release ([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)*/', oci_server_version($c), $matches);
9if (!(isset($matches[0]) && $matches[1] < 12)) {
10    die("skip expected output only valid when using pre-Oracle 12c database");
11}
12?>
13--FILE--
14<?php
15
16require(__DIR__.'/connect.inc');
17
18$stmtarray = array(
19    "drop sequence myseq",
20    "drop table mytab",
21    "create sequence myseq",
22    "create table mytab (mydata varchar2(20), seqcol number)"
23);
24
25oci8_test_sql_execute($c, $stmtarray);
26
27define('MYLIMIT', 200);
28
29$stmt = "insert into mytab (mydata, seqcol) values ('Some data', myseq.nextval) returning seqcol into :mybv";
30
31$stid = oci_parse($c, $stmt);
32if (!$stid) { echo "Parse error"; die; }
33
34$r = oci_bind_by_name($stid, ':MYBV', $mybv);
35if (!$r) { echo "Bind error"; die; }
36
37for ($i = 1; $i < MYLIMIT; $i++) {
38    $r = oci_execute($stid, OCI_DEFAULT);
39    if (!$r) { echo "Execute error"; die; }
40    var_dump($mybv);
41}
42
43oci_commit($c);
44
45$stmtarray = array(
46    "drop sequence myseq",
47    "drop table mytab"
48);
49
50oci8_test_sql_execute($c, $stmtarray);
51
52echo "Done\n";
53?>
54--EXPECT--
55string(1) "1"
56string(1) "2"
57string(1) "3"
58string(1) "4"
59string(1) "5"
60string(1) "6"
61string(1) "7"
62string(1) "8"
63string(1) "9"
64string(1) "1"
65string(1) "1"
66string(1) "1"
67string(1) "1"
68string(1) "1"
69string(1) "1"
70string(1) "1"
71string(1) "1"
72string(1) "1"
73string(1) "1"
74string(1) "2"
75string(1) "2"
76string(1) "2"
77string(1) "2"
78string(1) "2"
79string(1) "2"
80string(1) "2"
81string(1) "2"
82string(1) "2"
83string(1) "2"
84string(1) "3"
85string(1) "3"
86string(1) "3"
87string(1) "3"
88string(1) "3"
89string(1) "3"
90string(1) "3"
91string(1) "3"
92string(1) "3"
93string(1) "3"
94string(1) "4"
95string(1) "4"
96string(1) "4"
97string(1) "4"
98string(1) "4"
99string(1) "4"
100string(1) "4"
101string(1) "4"
102string(1) "4"
103string(1) "4"
104string(1) "5"
105string(1) "5"
106string(1) "5"
107string(1) "5"
108string(1) "5"
109string(1) "5"
110string(1) "5"
111string(1) "5"
112string(1) "5"
113string(1) "5"
114string(1) "6"
115string(1) "6"
116string(1) "6"
117string(1) "6"
118string(1) "6"
119string(1) "6"
120string(1) "6"
121string(1) "6"
122string(1) "6"
123string(1) "6"
124string(1) "7"
125string(1) "7"
126string(1) "7"
127string(1) "7"
128string(1) "7"
129string(1) "7"
130string(1) "7"
131string(1) "7"
132string(1) "7"
133string(1) "7"
134string(1) "8"
135string(1) "8"
136string(1) "8"
137string(1) "8"
138string(1) "8"
139string(1) "8"
140string(1) "8"
141string(1) "8"
142string(1) "8"
143string(1) "8"
144string(1) "9"
145string(1) "9"
146string(1) "9"
147string(1) "9"
148string(1) "9"
149string(1) "9"
150string(1) "9"
151string(1) "9"
152string(1) "9"
153string(1) "9"
154string(1) "1"
155string(1) "1"
156string(1) "1"
157string(1) "1"
158string(1) "1"
159string(1) "1"
160string(1) "1"
161string(1) "1"
162string(1) "1"
163string(1) "1"
164string(1) "1"
165string(1) "1"
166string(1) "1"
167string(1) "1"
168string(1) "1"
169string(1) "1"
170string(1) "1"
171string(1) "1"
172string(1) "1"
173string(1) "1"
174string(1) "1"
175string(1) "1"
176string(1) "1"
177string(1) "1"
178string(1) "1"
179string(1) "1"
180string(1) "1"
181string(1) "1"
182string(1) "1"
183string(1) "1"
184string(1) "1"
185string(1) "1"
186string(1) "1"
187string(1) "1"
188string(1) "1"
189string(1) "1"
190string(1) "1"
191string(1) "1"
192string(1) "1"
193string(1) "1"
194string(1) "1"
195string(1) "1"
196string(1) "1"
197string(1) "1"
198string(1) "1"
199string(1) "1"
200string(1) "1"
201string(1) "1"
202string(1) "1"
203string(1) "1"
204string(1) "1"
205string(1) "1"
206string(1) "1"
207string(1) "1"
208string(1) "1"
209string(1) "1"
210string(1) "1"
211string(1) "1"
212string(1) "1"
213string(1) "1"
214string(1) "1"
215string(1) "1"
216string(1) "1"
217string(1) "1"
218string(1) "1"
219string(1) "1"
220string(1) "1"
221string(1) "1"
222string(1) "1"
223string(1) "1"
224string(1) "1"
225string(1) "1"
226string(1) "1"
227string(1) "1"
228string(1) "1"
229string(1) "1"
230string(1) "1"
231string(1) "1"
232string(1) "1"
233string(1) "1"
234string(1) "1"
235string(1) "1"
236string(1) "1"
237string(1) "1"
238string(1) "1"
239string(1) "1"
240string(1) "1"
241string(1) "1"
242string(1) "1"
243string(1) "1"
244string(1) "1"
245string(1) "1"
246string(1) "1"
247string(1) "1"
248string(1) "1"
249string(1) "1"
250string(1) "1"
251string(1) "1"
252string(1) "1"
253string(1) "1"
254Done
255