Annotation of embedaddon/php/ext/oci8/tests/bind_char_4_11gR1.phpt, revision 1.1.1.2
1.1 misho 1: --TEST--
2: PL/SQL oci_bind_by_name with SQLT_AFC aka CHAR to VARCHAR2 parameter
3: --SKIPIF--
4: <?php
5: if (!extension_loaded('oci8')) die ("skip no oci8 extension");
6: require(dirname(__FILE__)."/connect.inc");
7: // The bind buffer size edge cases seem to change each DB version.
1.1.1.2 ! misho 8: if (preg_match('/Release 11\.1\./', oci_server_version($c), $matches) !== 1) {
1.1 misho 9: if (preg_match('/Release 11\.2\.0\.3/', oci_server_version($c), $matches) !== 1) {
10: die("skip expected output only valid when using Oracle 11gR1 or 11.2.0.3 databases");
11: }
12: }
13: ?>
14: --ENV--
15: NLS_LANG=
16: --FILE--
17: <?php
18:
19: // Same test as bind_char_3 but the PL/SQL function uses VARCHAR2 instead of CHAR
20:
21: require(dirname(__FILE__).'/connect.inc');
22:
23: // Initialization
24:
25: $stmtarray = array(
26: "create or replace function bind_char_3_fn(p1 varchar2) return varchar2 as begin return p1; end;",
27: );
28:
29: oci8_test_sql_execute($c, $stmtarray);
30:
31: // Run Test
32:
33: echo "Test 1.1 In Length: default. In Type: default. Out Length: default. Out Type: default\n";
34:
35: $s = oci_parse($c, "begin :bv2 := bind_char_3_fn(:bv1); end;");
36: $bv1 = 'abc';
37: $r = oci_bind_by_name($s, ':bv1', $bv1) && oci_bind_by_name($s, ':bv2', $bv2);
38: if ($r)
39: do_e($s);
40: var_dump($bv1, $bv2);
41:
42: echo "Test 1.2 In Length: default. In Type: default. Out Length: 10. Out Type: default\n";
43:
44: $bv1 = 'abc';
45: $r = oci_bind_by_name($s, ':bv1', $bv1) && oci_bind_by_name($s, ':bv2', $bv2, 10);
46: if ($r)
47: do_e($s);
48: var_dump($bv1, $bv2);
49:
50:
51: echo "Test 1.3 In Length: -1. In Type: AFC. Out Length: 10. Out Type: default\n";
52:
53: $bv1 = 'abc';
54: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10);
55: if ($r)
56: do_e($s);
57: var_dump($bv1, $bv2);
58:
59:
60:
61: echo "Test 1.4 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC\n";
62:
63: $bv1 = 'abc';
64: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
65: if ($r)
66: do_e($s);
67: var_dump($bv1, $bv2);
68:
69:
70: echo "Test 1.5 In Length: strlen. In Type: AFC. Out Length: strlen(input). Out Type: AFC\n";
71:
72: $bv1 = 'abc';
73: $r = oci_bind_by_name($s, ':bv1', $bv1, strlen($bv1), SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, strlen($bv1), SQLT_AFC);
74: if ($r)
75: do_e($s);
76: var_dump($bv1, $bv2);
77:
78:
79: echo "Test 1.6 In Length: strlen. In Type: AFC. Out Length: strlen(input)-1. Out Type: AFC\n";
80:
81: $bv1 = 'abc';
82: $r = oci_bind_by_name($s, ':bv1', $bv1, strlen($bv1), SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, strlen($bv1)-1, SQLT_AFC);
83: if ($r)
84: do_e($s);
85: var_dump($bv1, $bv2);
86:
87:
88: echo "Test 1.7 In Length: strlen. In Type: AFC. Out Length: strlen(input)+1. Out Type: AFC\n";
89:
90: $bv1 = 'abc';
91: $r = oci_bind_by_name($s, ':bv1', $bv1, strlen($bv1), SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, strlen($bv1)+1, SQLT_AFC);
92: if ($r)
93: do_e($s);
94: var_dump($bv1, $bv2);
95:
96:
97: echo "\n\nTests with ''\n\n";
98:
99: echo "Test 2.1 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC\n";
100:
101: $bv1 = '';
102: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
103: if ($r)
104: do_e($s);
105: var_dump($bv1, $bv2);
106:
107:
108: echo "Test 2.2 In Length: default. In Type: default. Out Length: 10. Out Type: default\n";
109:
110: $r = oci_bind_by_name($s, ':bv1', $bv1) && oci_bind_by_name($s, ':bv2', $bv2, 10);
111: if ($r)
112: do_e($s);
113: var_dump($bv1, $bv2);
114:
115:
116:
117: echo "Test 2.3 In Length: -1. In Type: AFC. Out Length: 10. Out Type: default\n";
118:
119: $bv1 = '';
120: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10);
121: if ($r)
122: do_e($s);
123: var_dump($bv1, $bv2);
124:
125:
126:
127: echo "Test 2.4 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC\n";
128:
129: $bv1 = '';
130: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
131: if ($r)
132: do_e($s);
133: var_dump($bv1, $bv2);
134:
135:
136:
137: echo "Test 2.5 In Length: -1. In Type: AFC. Out Length: 0. Out Type: AFC\n";
138:
139: $bv1 = '';
140: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 0, SQLT_AFC);
141: if ($r)
142: do_e($s);
143: var_dump($bv1, $bv2);
144:
145:
146:
147: echo "Test 2.6 In Length: 0. In Type: AFC. Out Length: 0. Out Type: AFC\n";
148:
149: $bv1 = '';
150: $r = oci_bind_by_name($s, ':bv1', $bv1, 0, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 0, SQLT_AFC);
151: if ($r)
152: do_e($s);
153: var_dump($bv1, $bv2);
154:
155:
156:
157: echo "Test 2.7 In Length: 1. In Type: AFC. Out Length: 1. Out Type: AFC\n";
158:
159: $bv1 = '';
160: $r = oci_bind_by_name($s, ':bv1', $bv1, 1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 1, SQLT_AFC);
161: if ($r)
162: do_e($s);
163: var_dump($bv1, $bv2);
164:
165:
166:
167: echo "\n\nTests with NULL\n";
168:
169: echo "Test 3.1 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC\n";
170:
171: $bv1 = null;
172: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
173: if ($r)
174: do_e($s);
175: var_dump($bv1, $bv2);
176:
177:
178: echo "Test 3.2 In Length: default. In Type: default. Out Length: 10. Out Type: default\n";
179:
180: $bv1 = null;
181: $r = oci_bind_by_name($s, ':bv1', $bv1) && oci_bind_by_name($s, ':bv2', $bv2, 10);
182: if ($r)
183: do_e($s);
184: var_dump($bv1, $bv2);
185:
186:
187:
188: echo "Test 3.3 In Length: -1. In Type: AFC. Out Length: 10. Out Type: default\n";
189:
190: $bv1 = null;
191: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10);
192: if ($r)
193: do_e($s);
194: var_dump($bv1, $bv2);
195:
196:
197:
198: echo "Test 3.4 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC\n";
199:
200: $bv1 = null;
201: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
202: if ($r)
203: do_e($s);
204: var_dump($bv1, $bv2);
205:
206:
207: echo "Test 3.5 In Length: -1. In Type: AFC. Out Length: 0. Out Type: AFC\n";
208:
209: $bv1 = null;
210: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 0, SQLT_AFC);
211: if ($r)
212: do_e($s);
213: var_dump($bv1, $bv2);
214:
215:
216:
217: echo "Test 3.6 In Length: -1. In Type: AFC. Out Length: 1. Out Type: AFC\n";
218:
219: $bv1 = null;
220: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 1, SQLT_AFC);
221: if ($r)
222: do_e($s);
223: var_dump($bv1, $bv2);
224:
225:
226: function do_e($s)
227: {
228: echo " Executing:\n";
229:
230: $r = @oci_execute($s);
231: if (!$r) {
232: $m = oci_error($s);
233: echo " Oci_execute error ORA-".$m['code']."\n";
234: return;
235: }
236: }
237:
238: // Cleanup
239:
240: $stmtarray = array(
241: "drop function bind_char_3_fn"
242: );
243:
244: oci8_test_sql_execute($c, $stmtarray);
245:
246: echo "Done\n";
247:
248: ?>
249: --EXPECTF--
250: Test 1.1 In Length: default. In Type: default. Out Length: default. Out Type: default
251: Executing:
252: Oci_execute error ORA-6502
253: string(3) "abc"
254: NULL
255: Test 1.2 In Length: default. In Type: default. Out Length: 10. Out Type: default
256: Executing:
257: string(3) "abc"
258: string(3) "abc"
259: Test 1.3 In Length: -1. In Type: AFC. Out Length: 10. Out Type: default
260: Executing:
261: string(3) "abc"
262: string(3) "abc"
263: Test 1.4 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC
264: Executing:
265: string(3) "abc"
266: string(10) "abc "
267: Test 1.5 In Length: strlen. In Type: AFC. Out Length: strlen(input). Out Type: AFC
268: Executing:
269: string(3) "abc"
270: string(3) "abc"
271: Test 1.6 In Length: strlen. In Type: AFC. Out Length: strlen(input)-1. Out Type: AFC
272: Executing:
273: Oci_execute error ORA-6502
274: string(3) "abc"
275: string(3) "abc"
276: Test 1.7 In Length: strlen. In Type: AFC. Out Length: strlen(input)+1. Out Type: AFC
277: Executing:
278: string(3) "abc"
279: string(4) "abc "
280:
281:
282: Tests with ''
283:
284: Test 2.1 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC
285: Executing:
286: string(0) ""
287: NULL
288: Test 2.2 In Length: default. In Type: default. Out Length: 10. Out Type: default
289: Executing:
290: string(0) ""
291: NULL
292: Test 2.3 In Length: -1. In Type: AFC. Out Length: 10. Out Type: default
293: Executing:
294: string(0) ""
295: NULL
296: Test 2.4 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC
297: Executing:
298: string(0) ""
299: NULL
300: Test 2.5 In Length: -1. In Type: AFC. Out Length: 0. Out Type: AFC
301: Executing:
302: string(0) ""
303: NULL
304: Test 2.6 In Length: 0. In Type: AFC. Out Length: 0. Out Type: AFC
305: Executing:
306: string(0) ""
307: NULL
308: Test 2.7 In Length: 1. In Type: AFC. Out Length: 1. Out Type: AFC
309: Executing:
310: string(0) ""
311: NULL
312:
313:
314: Tests with NULL
315: Test 3.1 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC
316: Executing:
317: NULL
318: NULL
319: Test 3.2 In Length: default. In Type: default. Out Length: 10. Out Type: default
320: Executing:
321: NULL
322: NULL
323: Test 3.3 In Length: -1. In Type: AFC. Out Length: 10. Out Type: default
324: Executing:
325: NULL
326: NULL
327: Test 3.4 In Length: -1. In Type: AFC. Out Length: 10. Out Type: AFC
328: Executing:
329: NULL
330: NULL
331: Test 3.5 In Length: -1. In Type: AFC. Out Length: 0. Out Type: AFC
332: Executing:
333: NULL
334: NULL
335: Test 3.6 In Length: -1. In Type: AFC. Out Length: 1. Out Type: AFC
336: Executing:
337: NULL
338: NULL
339: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>