Annotation of embedaddon/php/ext/oci8/tests/bind_char_4.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 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>