Annotation of embedaddon/php/ext/oci8/tests/bind_char_1.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: SELECT oci_bind_by_name with SQLT_AFC aka CHAR
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: require(dirname(__FILE__).'/connect.inc');
23:
24: // Initialization
25:
26: $stmtarray = array(
27: "drop table bind_char_tab",
28: "create table bind_char_tab (id number, c1 char(10), c2 varchar2(10))",
29: "insert into bind_char_tab values (1, 'abc', NULL)",
30: "insert into bind_char_tab values (2, NULL, 'abc')",
31: "insert into bind_char_tab values (3, NULL, 'abc ')"
32: );
33:
34: oci8_test_sql_execute($c, $stmtarray);
35:
36: // Run Test
37:
38: echo "*** Non-null Data Tests against CHAR***\n";
39:
40: $bv1 = 'abc';
41:
42: echo "Test 1.1: Type: default. Length: default\n";
43: $s = oci_parse($c, "select * from bind_char_tab where c1 = :bv");
44: $r = oci_bind_by_name($s, ":bv", $bv1);
45: if ($r)
46: do_e_q($s);
47:
48: echo "Test 1.2: Type: AFC. Length: default\n";
49: $r = oci_bind_by_name($s, ":bv", $bv1, -1, SQLT_AFC);
50: if ($r)
51: do_e_q($s);
52:
53: echo "Test 1.3: Type: AFC: Length: 0\n";
54: $r = oci_bind_by_name($s, ":bv", $bv1, 0, SQLT_AFC);
55: if ($r)
56: do_e_q($s);
57:
58: echo "Test 1.4: Type: AFC: Length: strlen\n";
59: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1), SQLT_AFC);
60: if ($r)
61: do_e_q($s);
62:
63: echo "Test 1.5: Type: AFC. Length: strlen-1\n";
64: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)-1, SQLT_AFC);
65: if ($r)
66: do_e_q($s);
67:
68: echo "Test 1.6: Type: AFC. Length: strlen+1\n";
69: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)+1, SQLT_AFC);
70: if ($r)
71: do_e_q($s);
72:
73: echo "\n\n*** NULL data tests against CHAR ***\n";
74:
75: $bv1 = null;
76:
77: echo "Test 2.1: Type: default. Length: default\n";
78: $s = oci_parse($c, "select * from bind_char_tab where c1 = :bv");
79: $r = oci_bind_by_name($s, ":bv", $bv1);
80: if ($r)
81: do_e_q($s);
82:
83: echo "Test 2.2: Type: AFC. Length: default\n";
84: $r = oci_bind_by_name($s, ":bv", $bv1, -1, SQLT_AFC);
85: if ($r)
86: do_e_q($s);
87:
88: echo "Test 2.3: Type: AFC: Length: 0\n";
89: $r = oci_bind_by_name($s, ":bv", $bv1, 0, SQLT_AFC);
90: if ($r)
91: do_e_q($s);
92:
93: echo "Test 2.4: Type: AFC: Length: strlen\n";
94: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1), SQLT_AFC);
95: if ($r)
96: do_e_q($s);
97:
98: echo "Test 2.5: Type: AFC. Length: strlen-1\n";
99: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)-1, SQLT_AFC);
100: if ($r)
101: do_e_q($s);
102:
103: echo "Test 2.6: Type: AFC. Length: strlen+1\n";
104: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)+1, SQLT_AFC);
105: if ($r)
106: do_e_q($s);
107:
108:
109: echo "\n\n*** Non-null Data Tests against VARCHAR2***\n";
110:
111: $bv1 = 'abc';
112:
113: echo "Test 3.1: Type: default. Length: default\n";
114: $s = oci_parse($c, "select * from bind_char_tab where c2 = :bv");
115: $r = oci_bind_by_name($s, ":bv", $bv1);
116: if ($r)
117: do_e_q($s);
118:
119: echo "Test 3.2: Type: AFC. Length: default\n";
120: $r = oci_bind_by_name($s, ":bv", $bv1, -1, SQLT_AFC);
121: if ($r)
122: do_e_q($s);
123:
124: echo "Test 3.3: Type: AFC: Length: 0\n";
125: $r = oci_bind_by_name($s, ":bv", $bv1, 0, SQLT_AFC);
126: if ($r)
127: do_e_q($s);
128:
129: echo "Test 3.4: Type: AFC: Length: strlen\n";
130: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1), SQLT_AFC);
131: if ($r)
132: do_e_q($s);
133:
134: echo "Test 3.5: Type: AFC. Length: strlen-1\n";
135: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)-1, SQLT_AFC);
136: if ($r)
137: do_e_q($s);
138:
139: echo "Test 3.6: Type: AFC. Length: strlen+1\n";
140: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)+1, SQLT_AFC);
141: if ($r)
142: do_e_q($s);
143:
144:
145: echo "\n\n*** NULL data tests against VARCHAR2 ***\n";
146:
147: $bv1 = null;
148:
149: echo "Test 4.1: Type: default. Length: default\n";
150: $s = oci_parse($c, "select * from bind_char_tab where c2 = :bv");
151: $r = oci_bind_by_name($s, ":bv", $bv1);
152: if ($r)
153: do_e_q($s);
154:
155: echo "Test 4.2: Type: AFC. Length: default\n";
156: $r = oci_bind_by_name($s, ":bv", $bv1, -1, SQLT_AFC);
157: if ($r)
158: do_e_q($s);
159:
160: echo "Test 4.3: Type: AFC: Length: 0\n";
161: $r = oci_bind_by_name($s, ":bv", $bv1, 0, SQLT_AFC);
162: if ($r)
163: do_e_q($s);
164:
165: echo "Test 4.4: Type: AFC: Length: strlen\n";
166: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1), SQLT_AFC);
167: if ($r)
168: do_e_q($s);
169:
170: echo "Test 4.5: Type: AFC. Length: strlen-1\n";
171: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)-1, SQLT_AFC);
172: if ($r)
173: do_e_q($s);
174:
175: echo "Test 4.6: Type: AFC. Length: strlen+1\n";
176: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)+1, SQLT_AFC);
177: if ($r)
178: do_e_q($s);
179:
180:
181:
182: function do_e_q($s)
183: {
184: echo " Querying:\n";
185:
186: $r = @oci_execute($s);
187: if (!$r) {
188: $m = oci_error($s);
189: echo " Oci_execute error ORA-".$m['code']." Exiting Query\n";
190: return;
191: }
192: while ($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) {
193: foreach ($row as $item) {
194: echo " :" . $item . ":\n";
195: }
196: }
197: }
198:
199: // Cleanup
200: $stmtarray = array(
201: "drop table bind_char_tab"
202: );
203:
204: oci8_test_sql_execute($c, $stmtarray);
205:
206: echo "Done\n";
207:
208: ?>
209: --EXPECT--
210: *** Non-null Data Tests against CHAR***
211: Test 1.1: Type: default. Length: default
212: Querying:
213: Test 1.2: Type: AFC. Length: default
214: Querying:
215: :1:
216: :abc :
217: ::
218: Test 1.3: Type: AFC: Length: 0
219: Querying:
220: :1:
221: :abc :
222: ::
223: Test 1.4: Type: AFC: Length: strlen
224: Querying:
225: :1:
226: :abc :
227: ::
228: Test 1.5: Type: AFC. Length: strlen-1
229: Querying:
230: :1:
231: :abc :
232: ::
233: Test 1.6: Type: AFC. Length: strlen+1
234: Querying:
235: :1:
236: :abc :
237: ::
238:
239:
240: *** NULL data tests against CHAR ***
241: Test 2.1: Type: default. Length: default
242: Querying:
243: Test 2.2: Type: AFC. Length: default
244: Querying:
245: Test 2.3: Type: AFC: Length: 0
246: Querying:
247: Test 2.4: Type: AFC: Length: strlen
248: Querying:
249: Test 2.5: Type: AFC. Length: strlen-1
250: Querying:
251: Test 2.6: Type: AFC. Length: strlen+1
252: Querying:
253:
254:
255: *** Non-null Data Tests against VARCHAR2***
256: Test 3.1: Type: default. Length: default
257: Querying:
258: :2:
259: ::
260: :abc:
261: Test 3.2: Type: AFC. Length: default
262: Querying:
263: :2:
264: ::
265: :abc:
266: Test 3.3: Type: AFC: Length: 0
267: Querying:
268: :2:
269: ::
270: :abc:
271: Test 3.4: Type: AFC: Length: strlen
272: Querying:
273: :2:
274: ::
275: :abc:
276: Test 3.5: Type: AFC. Length: strlen-1
277: Querying:
278: :2:
279: ::
280: :abc:
281: Test 3.6: Type: AFC. Length: strlen+1
282: Querying:
283: :2:
284: ::
285: :abc:
286:
287:
288: *** NULL data tests against VARCHAR2 ***
289: Test 4.1: Type: default. Length: default
290: Querying:
291: Test 4.2: Type: AFC. Length: default
292: Querying:
293: Test 4.3: Type: AFC: Length: 0
294: Querying:
295: Test 4.4: Type: AFC: Length: strlen
296: Querying:
297: Test 4.5: Type: AFC. Length: strlen-1
298: Querying:
299: Test 4.6: Type: AFC. Length: strlen+1
300: Querying:
301: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>