Annotation of embedaddon/php/ext/oci8/tests/bind_char_4_11gR1.phpt, revision 1.1.1.2

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.
1.1.1.2 ! misho       8: if (preg_match('/Release 11\.1\./', oci_server_version($c), $matches) !== 1) {
1.1       misho       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>