Annotation of embedaddon/php/ext/oci8/tests/bind_char_1.phpt, revision 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>