Annotation of embedaddon/php/ext/oci8/tests/bind_char_4_11gR1.phpt, revision 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 11\.1\./', $sv, $matches) !== 1) {
! 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>