Annotation of embedaddon/php/ext/oci8/tests/bind_char_3.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: PL/SQL oci_bind_by_name with SQLT_AFC aka CHAR to CHAR 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: require(dirname(__FILE__).'/connect.inc');
                     23: 
                     24: // Initialization
                     25: 
                     26: $stmtarray = array(
                     27:        "create or replace function bind_char_3_fn(p1 char) return char as begin return p1; end;",
                     28: );
                     29: 
                     30: oci8_test_sql_execute($c, $stmtarray);
                     31: 
                     32: // Run Test
                     33: 
                     34: echo "Test 1.1 In Length: default.  In Type: default.  Out Length: default.          Out Type: default\n";
                     35: 
                     36: $s = oci_parse($c, "begin :bv2 := bind_char_3_fn(:bv1); end;");
                     37: $bv1 = 'abc';
                     38: $r = oci_bind_by_name($s, ':bv1', $bv1) && oci_bind_by_name($s, ':bv2', $bv2);
                     39: if ($r)
                     40:        do_e($s);
                     41: var_dump($bv1, $bv2);
                     42: 
                     43: echo "Test 1.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default\n";
                     44: 
                     45: $bv1 = 'abc';
                     46: $r = oci_bind_by_name($s, ':bv1', $bv1) && oci_bind_by_name($s, ':bv2', $bv2, 10);
                     47: if ($r)
                     48:        do_e($s);
                     49: var_dump($bv1, $bv2);
                     50: 
                     51: 
                     52: echo "Test 1.3 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: default\n";
                     53: 
                     54: $bv1 = 'abc';
                     55: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10);
                     56: if ($r)
                     57:        do_e($s);
                     58: var_dump($bv1, $bv2);
                     59: 
                     60: 
                     61: 
                     62: echo "Test 1.4 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC\n";
                     63: 
                     64: $bv1 = 'abc';
                     65: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
                     66: if ($r)
                     67:        do_e($s);
                     68: var_dump($bv1, $bv2);
                     69: 
                     70: 
                     71: echo "Test 1.5 In Length: strlen.   In Type: AFC.      Out Length: strlen(input).    Out Type: AFC\n";
                     72: 
                     73: $bv1 = 'abc';
                     74: $r = oci_bind_by_name($s, ':bv1', $bv1, strlen($bv1), SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, strlen($bv1), SQLT_AFC);
                     75: if ($r)
                     76:        do_e($s);
                     77: var_dump($bv1, $bv2);
                     78: 
                     79: 
                     80: echo "Test 1.6 In Length: strlen.   In Type: AFC.      Out Length: strlen(input)-1.  Out Type: AFC\n";
                     81: 
                     82: $bv1 = 'abc';
                     83: $r = oci_bind_by_name($s, ':bv1', $bv1, strlen($bv1), SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, strlen($bv1)-1, SQLT_AFC);
                     84: if ($r)
                     85:        do_e($s);
                     86: var_dump($bv1, $bv2);
                     87: 
                     88: 
                     89: echo "Test 1.7 In Length: strlen.   In Type: AFC.      Out Length: strlen(input)+1.  Out Type: AFC\n";
                     90: 
                     91: $bv1 = 'abc';
                     92: $r = oci_bind_by_name($s, ':bv1', $bv1, strlen($bv1), SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, strlen($bv1)+1, SQLT_AFC);
                     93: if ($r)
                     94:        do_e($s);
                     95: var_dump($bv1, $bv2);
                     96: 
                     97: 
                     98: echo "\n\nTests with ''\n\n";
                     99: 
                    100: echo "Test 2.1 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC\n";
                    101: 
                    102: $bv1 = '';
                    103: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
                    104: if ($r)
                    105:        do_e($s);
                    106: var_dump($bv1, $bv2);
                    107: 
                    108: 
                    109: echo "Test 2.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default\n";
                    110: 
                    111: $r = oci_bind_by_name($s, ':bv1', $bv1) && oci_bind_by_name($s, ':bv2', $bv2, 10);
                    112: if ($r)
                    113:        do_e($s);
                    114: var_dump($bv1, $bv2);
                    115: 
                    116: 
                    117: 
                    118: echo "Test 2.3 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: default\n";
                    119: 
                    120: $bv1 = '';
                    121: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10);
                    122: if ($r)
                    123:        do_e($s);
                    124: var_dump($bv1, $bv2);
                    125: 
                    126: 
                    127: 
                    128: echo "Test 2.4 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC\n";
                    129: 
                    130: $bv1 = '';
                    131: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
                    132: if ($r)
                    133:        do_e($s);
                    134: var_dump($bv1, $bv2);
                    135: 
                    136: 
                    137: 
                    138: echo "Test 2.5 In Length: -1.       In Type: AFC.      Out Length: 0.                Out Type: AFC\n";
                    139: 
                    140: $bv1 = '';
                    141: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 0, SQLT_AFC);
                    142: if ($r)
                    143:        do_e($s);
                    144: var_dump($bv1, $bv2);
                    145: 
                    146: 
                    147: 
                    148: echo "Test 2.6 In Length: 0.        In Type: AFC.      Out Length: 0.                Out Type: AFC\n";
                    149: 
                    150: $bv1 = '';
                    151: $r = oci_bind_by_name($s, ':bv1', $bv1, 0, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 0, SQLT_AFC);
                    152: if ($r)
                    153:        do_e($s);
                    154: var_dump($bv1, $bv2);
                    155: 
                    156: 
                    157: 
                    158: echo "Test 2.7 In Length: 1.        In Type: AFC.      Out Length: 1.                Out Type: AFC\n";
                    159: 
                    160: $bv1 = '';
                    161: $r = oci_bind_by_name($s, ':bv1', $bv1, 1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 1, SQLT_AFC);
                    162: if ($r)
                    163:        do_e($s);
                    164: var_dump($bv1, $bv2);
                    165: 
                    166: 
                    167: 
                    168: echo "\n\nTests with NULL\n";
                    169: 
                    170: echo "Test 3.1 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC\n";
                    171: 
                    172: $bv1 = null;
                    173: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
                    174: if ($r)
                    175:        do_e($s);
                    176: var_dump($bv1, $bv2);
                    177: 
                    178: 
                    179: echo "Test 3.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default\n";
                    180: 
                    181: $bv1 = null;
                    182: $r = oci_bind_by_name($s, ':bv1', $bv1) && oci_bind_by_name($s, ':bv2', $bv2, 10);
                    183: if ($r)
                    184:        do_e($s);
                    185: var_dump($bv1, $bv2);
                    186: 
                    187: 
                    188: 
                    189: echo "Test 3.3 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: default\n";
                    190: 
                    191: $bv1 = null;
                    192: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10);
                    193: if ($r)
                    194:        do_e($s);
                    195: var_dump($bv1, $bv2);
                    196: 
                    197: 
                    198: 
                    199: echo "Test 3.4 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC\n";
                    200: 
                    201: $bv1 = null;
                    202: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 10, SQLT_AFC);
                    203: if ($r)
                    204:        do_e($s);
                    205: var_dump($bv1, $bv2);
                    206: 
                    207: 
                    208: echo "Test 3.5 In Length: -1.       In Type: AFC.      Out Length: 0.                Out Type: AFC\n";
                    209: 
                    210: $bv1 = null;
                    211: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 0, SQLT_AFC);
                    212: if ($r)
                    213:        do_e($s);
                    214: var_dump($bv1, $bv2);
                    215: 
                    216: 
                    217: 
                    218: echo "Test 3.6 In Length: -1.       In Type: AFC.      Out Length: 1.                Out Type: AFC\n";
                    219: 
                    220: $bv1 = null;
                    221: $r = oci_bind_by_name($s, ':bv1', $bv1, -1, SQLT_AFC) && oci_bind_by_name($s, ':bv2', $bv2, 1, SQLT_AFC);
                    222: if ($r)
                    223:        do_e($s);
                    224: var_dump($bv1, $bv2);
                    225: 
                    226: 
                    227: function do_e($s)
                    228: {
                    229:        echo "  Executing:\n";
                    230: 
                    231:        $r = @oci_execute($s);
                    232:        if (!$r) {
                    233:                $m = oci_error($s);
                    234:                echo "    Oci_execute error ORA-".$m['code']."\n";
                    235:                return;
                    236:        }
                    237: }
                    238: 
                    239: // Cleanup
                    240: 
                    241: $stmtarray = array(
                    242:        "drop function bind_char_3_fn"
                    243: );
                    244: 
                    245: oci8_test_sql_execute($c, $stmtarray);
                    246: 
                    247: echo "Done\n";
                    248: 
                    249: ?>
                    250: --EXPECTF--
                    251: Test 1.1 In Length: default.  In Type: default.  Out Length: default.          Out Type: default
                    252:   Executing:
                    253: string(3) "abc"
                    254: string(3) "abc"
                    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(30) "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(9) "abc      "
                    271: Test 1.6 In Length: strlen.   In Type: AFC.      Out Length: strlen(input)-1.  Out Type: AFC
                    272:   Executing:
                    273: string(3) "abc"
                    274: string(6) "abc   "
                    275: Test 1.7 In Length: strlen.   In Type: AFC.      Out Length: strlen(input)+1.  Out Type: AFC
                    276:   Executing:
                    277: string(3) "abc"
                    278: string(12) "abc         "
                    279: 
                    280: 
                    281: Tests with ''
                    282: 
                    283: Test 2.1 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC
                    284:   Executing:
                    285: string(0) ""
                    286: NULL
                    287: Test 2.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default
                    288:   Executing:
                    289: string(0) ""
                    290: NULL
                    291: Test 2.3 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: default
                    292:   Executing:
                    293: string(0) ""
                    294: NULL
                    295: Test 2.4 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC
                    296:   Executing:
                    297: string(0) ""
                    298: NULL
                    299: Test 2.5 In Length: -1.       In Type: AFC.      Out Length: 0.                Out Type: AFC
                    300:   Executing:
                    301: string(0) ""
                    302: NULL
                    303: Test 2.6 In Length: 0.        In Type: AFC.      Out Length: 0.                Out Type: AFC
                    304:   Executing:
                    305: string(0) ""
                    306: NULL
                    307: Test 2.7 In Length: 1.        In Type: AFC.      Out Length: 1.                Out Type: AFC
                    308:   Executing:
                    309: string(0) ""
                    310: NULL
                    311: 
                    312: 
                    313: Tests with NULL
                    314: Test 3.1 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC
                    315:   Executing:
                    316: NULL
                    317: NULL
                    318: Test 3.2 In Length: default.  In Type: default.  Out Length: 10.               Out Type: default
                    319:   Executing:
                    320: NULL
                    321: NULL
                    322: Test 3.3 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: default
                    323:   Executing:
                    324: NULL
                    325: NULL
                    326: Test 3.4 In Length: -1.       In Type: AFC.      Out Length: 10.               Out Type: AFC
                    327:   Executing:
                    328: NULL
                    329: NULL
                    330: Test 3.5 In Length: -1.       In Type: AFC.      Out Length: 0.                Out Type: AFC
                    331:   Executing:
                    332: NULL
                    333: NULL
                    334: Test 3.6 In Length: -1.       In Type: AFC.      Out Length: 1.                Out Type: AFC
                    335:   Executing:
                    336: NULL
                    337: NULL
                    338: Done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>