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