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

1.1       misho       1: --TEST--
                      2: SELECT oci_bind_by_name with SQLT_AFC aka CHAR
                      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:        "drop table bind_char_tab",
                     28:        "create table bind_char_tab (id number, c1 char(10), c2 varchar2(10))",
                     29:        "insert into bind_char_tab values (1, 'abc', NULL)",
                     30:        "insert into bind_char_tab values (2, NULL, 'abc')",
                     31:        "insert into bind_char_tab values (3, NULL, 'abc       ')"
                     32: );
                     33:                                                 
                     34: oci8_test_sql_execute($c, $stmtarray);
                     35: 
                     36: // Run Test
                     37: 
                     38: echo "*** Non-null Data Tests against CHAR***\n";
                     39: 
                     40: $bv1 = 'abc';
                     41: 
                     42: echo "Test 1.1: Type: default.  Length: default\n";
                     43: $s = oci_parse($c, "select * from bind_char_tab where c1 = :bv");
                     44: $r = oci_bind_by_name($s, ":bv", $bv1);
                     45: if ($r)
                     46:        do_e_q($s);
                     47: 
                     48: echo "Test 1.2: Type: AFC.  Length: default\n";
                     49: $r = oci_bind_by_name($s, ":bv", $bv1, -1, SQLT_AFC);
                     50: if ($r)
                     51:        do_e_q($s);
                     52: 
                     53: echo "Test 1.3: Type: AFC:  Length: 0\n";
                     54: $r = oci_bind_by_name($s, ":bv", $bv1, 0, SQLT_AFC);
                     55: if ($r)
                     56:        do_e_q($s);
                     57: 
                     58: echo "Test 1.4: Type: AFC:  Length: strlen\n";
                     59: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1), SQLT_AFC);
                     60: if ($r)
                     61:        do_e_q($s);
                     62: 
                     63: echo "Test 1.5: Type: AFC.  Length: strlen-1\n";
                     64: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)-1, SQLT_AFC);
                     65: if ($r)
                     66:        do_e_q($s);
                     67: 
                     68: echo "Test 1.6: Type: AFC.  Length: strlen+1\n";
                     69: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)+1, SQLT_AFC);
                     70: if ($r)
                     71:        do_e_q($s);
                     72: 
                     73: echo "\n\n*** NULL data tests against CHAR ***\n";
                     74: 
                     75: $bv1 = null;
                     76: 
                     77: echo "Test 2.1: Type: default.  Length: default\n";
                     78: $s = oci_parse($c, "select * from bind_char_tab where c1 = :bv");
                     79: $r = oci_bind_by_name($s, ":bv", $bv1);
                     80: if ($r)
                     81:        do_e_q($s);
                     82: 
                     83: echo "Test 2.2: Type: AFC.  Length: default\n";
                     84: $r = oci_bind_by_name($s, ":bv", $bv1, -1, SQLT_AFC);
                     85: if ($r)
                     86:        do_e_q($s);
                     87: 
                     88: echo "Test 2.3: Type: AFC:  Length: 0\n";
                     89: $r = oci_bind_by_name($s, ":bv", $bv1, 0, SQLT_AFC);
                     90: if ($r)
                     91:        do_e_q($s);
                     92: 
                     93: echo "Test 2.4: Type: AFC:  Length: strlen\n";
                     94: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1), SQLT_AFC);
                     95: if ($r)
                     96:        do_e_q($s);
                     97: 
                     98: echo "Test 2.5: Type: AFC.  Length: strlen-1\n";
                     99: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)-1, SQLT_AFC);
                    100: if ($r)
                    101:        do_e_q($s);
                    102: 
                    103: echo "Test 2.6: Type: AFC.  Length: strlen+1\n";
                    104: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)+1, SQLT_AFC);
                    105: if ($r)
                    106:        do_e_q($s);
                    107: 
                    108: 
                    109: echo "\n\n*** Non-null Data Tests against VARCHAR2***\n";
                    110: 
                    111: $bv1 = 'abc';
                    112: 
                    113: echo "Test 3.1: Type: default.  Length: default\n";
                    114: $s = oci_parse($c, "select * from bind_char_tab where c2 = :bv");
                    115: $r = oci_bind_by_name($s, ":bv", $bv1);
                    116: if ($r)
                    117:        do_e_q($s);
                    118: 
                    119: echo "Test 3.2: Type: AFC.  Length: default\n";
                    120: $r = oci_bind_by_name($s, ":bv", $bv1, -1, SQLT_AFC);
                    121: if ($r)
                    122:        do_e_q($s);
                    123: 
                    124: echo "Test 3.3: Type: AFC:  Length: 0\n";
                    125: $r = oci_bind_by_name($s, ":bv", $bv1, 0, SQLT_AFC);
                    126: if ($r)
                    127:        do_e_q($s);
                    128: 
                    129: echo "Test 3.4: Type: AFC:  Length: strlen\n";
                    130: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1), SQLT_AFC);
                    131: if ($r)
                    132:        do_e_q($s);
                    133: 
                    134: echo "Test 3.5: Type: AFC.  Length: strlen-1\n";
                    135: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)-1, SQLT_AFC);
                    136: if ($r)
                    137:        do_e_q($s);
                    138: 
                    139: echo "Test 3.6: Type: AFC.  Length: strlen+1\n";
                    140: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)+1, SQLT_AFC);
                    141: if ($r)
                    142:        do_e_q($s);
                    143: 
                    144: 
                    145: echo "\n\n*** NULL data tests against VARCHAR2 ***\n";
                    146: 
                    147: $bv1 = null;
                    148: 
                    149: echo "Test 4.1: Type: default.  Length: default\n";
                    150: $s = oci_parse($c, "select * from bind_char_tab where c2 = :bv");
                    151: $r = oci_bind_by_name($s, ":bv", $bv1);
                    152: if ($r)
                    153:        do_e_q($s);
                    154: 
                    155: echo "Test 4.2: Type: AFC.  Length: default\n";
                    156: $r = oci_bind_by_name($s, ":bv", $bv1, -1, SQLT_AFC);
                    157: if ($r)
                    158:        do_e_q($s);
                    159: 
                    160: echo "Test 4.3: Type: AFC:  Length: 0\n";
                    161: $r = oci_bind_by_name($s, ":bv", $bv1, 0, SQLT_AFC);
                    162: if ($r)
                    163:        do_e_q($s);
                    164: 
                    165: echo "Test 4.4: Type: AFC:  Length: strlen\n";
                    166: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1), SQLT_AFC);
                    167: if ($r)
                    168:        do_e_q($s);
                    169: 
                    170: echo "Test 4.5: Type: AFC.  Length: strlen-1\n";
                    171: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)-1, SQLT_AFC);
                    172: if ($r)
                    173:        do_e_q($s);
                    174: 
                    175: echo "Test 4.6: Type: AFC.  Length: strlen+1\n";
                    176: $r = oci_bind_by_name($s, ":bv", $bv1, strlen($bv1)+1, SQLT_AFC);
                    177: if ($r)
                    178:        do_e_q($s);
                    179: 
                    180: 
                    181: 
                    182: function do_e_q($s)
                    183: {
                    184:        echo "  Querying:\n";
                    185: 
                    186:        $r = @oci_execute($s);
                    187:        if (!$r) {
                    188:                $m = oci_error($s);
                    189:                echo "    Oci_execute error ORA-".$m['code']." Exiting Query\n";
                    190:                return;
                    191:        }
                    192:        while ($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) {
                    193:                foreach ($row as $item) {
                    194:                        echo "    :" . $item . ":\n";
                    195:                }
                    196:        }
                    197: }
                    198: 
                    199: // Cleanup
                    200: $stmtarray = array(
                    201:        "drop table bind_char_tab"
                    202: );
                    203:                                                 
                    204: oci8_test_sql_execute($c, $stmtarray);
                    205: 
                    206: echo "Done\n";
                    207: 
                    208: ?>
                    209: --EXPECT--
                    210: *** Non-null Data Tests against CHAR***
                    211: Test 1.1: Type: default.  Length: default
                    212:   Querying:
                    213: Test 1.2: Type: AFC.  Length: default
                    214:   Querying:
                    215:     :1:
                    216:     :abc       :
                    217:     ::
                    218: Test 1.3: Type: AFC:  Length: 0
                    219:   Querying:
                    220:     :1:
                    221:     :abc       :
                    222:     ::
                    223: Test 1.4: Type: AFC:  Length: strlen
                    224:   Querying:
                    225:     :1:
                    226:     :abc       :
                    227:     ::
                    228: Test 1.5: Type: AFC.  Length: strlen-1
                    229:   Querying:
                    230:     :1:
                    231:     :abc       :
                    232:     ::
                    233: Test 1.6: Type: AFC.  Length: strlen+1
                    234:   Querying:
                    235:     :1:
                    236:     :abc       :
                    237:     ::
                    238: 
                    239: 
                    240: *** NULL data tests against CHAR ***
                    241: Test 2.1: Type: default.  Length: default
                    242:   Querying:
                    243: Test 2.2: Type: AFC.  Length: default
                    244:   Querying:
                    245: Test 2.3: Type: AFC:  Length: 0
                    246:   Querying:
                    247: Test 2.4: Type: AFC:  Length: strlen
                    248:   Querying:
                    249: Test 2.5: Type: AFC.  Length: strlen-1
                    250:   Querying:
                    251: Test 2.6: Type: AFC.  Length: strlen+1
                    252:   Querying:
                    253: 
                    254: 
                    255: *** Non-null Data Tests against VARCHAR2***
                    256: Test 3.1: Type: default.  Length: default
                    257:   Querying:
                    258:     :2:
                    259:     ::
                    260:     :abc:
                    261: Test 3.2: Type: AFC.  Length: default
                    262:   Querying:
                    263:     :2:
                    264:     ::
                    265:     :abc:
                    266: Test 3.3: Type: AFC:  Length: 0
                    267:   Querying:
                    268:     :2:
                    269:     ::
                    270:     :abc:
                    271: Test 3.4: Type: AFC:  Length: strlen
                    272:   Querying:
                    273:     :2:
                    274:     ::
                    275:     :abc:
                    276: Test 3.5: Type: AFC.  Length: strlen-1
                    277:   Querying:
                    278:     :2:
                    279:     ::
                    280:     :abc:
                    281: Test 3.6: Type: AFC.  Length: strlen+1
                    282:   Querying:
                    283:     :2:
                    284:     ::
                    285:     :abc:
                    286: 
                    287: 
                    288: *** NULL data tests against VARCHAR2 ***
                    289: Test 4.1: Type: default.  Length: default
                    290:   Querying:
                    291: Test 4.2: Type: AFC.  Length: default
                    292:   Querying:
                    293: Test 4.3: Type: AFC:  Length: 0
                    294:   Querying:
                    295: Test 4.4: Type: AFC:  Length: strlen
                    296:   Querying:
                    297: Test 4.5: Type: AFC.  Length: strlen-1
                    298:   Querying:
                    299: Test 4.6: Type: AFC.  Length: strlen+1
                    300:   Querying:
                    301: Done

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