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