Annotation of embedaddon/php/ext/oci8/tests/lob_null.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Test null data for CLOBs
        !             3: --SKIPIF--
        !             4: <?php
        !             5: $target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs
        !             6: require(dirname(__FILE__).'/skipif.inc');
        !             7: ?> 
        !             8: --FILE--
        !             9: <?php
        !            10: 
        !            11: require dirname(__FILE__).'/connect.inc';
        !            12: 
        !            13: // Initialization
        !            14: 
        !            15: $s = oci_parse($c, 'drop table lob_null_tab');
        !            16: @oci_execute($s);
        !            17: 
        !            18: $s = oci_parse($c, 'create table lob_null_tab (id number, data clob)');
        !            19: oci_execute($s);
        !            20: 
        !            21: $s = oci_parse($c, 
        !            22: 'create or replace procedure lob_null_proc_in (pid in number, pdata in CLOB)
        !            23:  as begin
        !            24:    insert into lob_null_tab (id, data) values (pid, pdata);
        !            25:  end;');
        !            26: oci_execute($s);
        !            27: 
        !            28: $s = oci_parse($c, 
        !            29: 'create or replace procedure lob_null_proc_out (pid in number, pdata out clob)
        !            30:    as begin
        !            31:      select data into pdata from lob_null_tab where id = pid;
        !            32:  end;');
        !            33: oci_execute($s);
        !            34: 
        !            35: // TEMPORARY CLOB
        !            36: 
        !            37: echo "Temporary CLOB: NULL\n";
        !            38: $s = oci_parse($c, "insert into lob_null_tab values (1, :b)");
        !            39: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !            40: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !            41: $lob->writeTemporary(null);
        !            42: $r = @oci_execute($s);
        !            43: if (!$r) {
        !            44:     $m = oci_error($s);
        !            45:     echo $m['message'], "\n";
        !            46: }   
        !            47: else {
        !            48:     $lob->close();
        !            49: }
        !            50: 
        !            51: echo "Temporary CLOB: ''\n";
        !            52: $s = oci_parse($c, "insert into lob_null_tab values (2, :b)");
        !            53: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !            54: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !            55: $lob->writeTemporary('');
        !            56: $r = @oci_execute($s);
        !            57: if (!$r) {
        !            58:     $m = oci_error($s);
        !            59:     echo $m['message'], "\n";
        !            60: }   
        !            61: else {
        !            62:     $lob->close();
        !            63: }
        !            64: 
        !            65: echo "Temporary CLOB: text\n";
        !            66: $s = oci_parse($c, "insert into lob_null_tab values (3, :b)");
        !            67: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !            68: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !            69: $lob->writeTemporary('Inserted via SQL statement');
        !            70: $r = @oci_execute($s);
        !            71: if (!$r) {
        !            72:     $m = oci_error($s);
        !            73:     echo $m['message'], "\n";
        !            74: }   
        !            75: else {
        !            76:     $lob->close();
        !            77: }
        !            78: 
        !            79: // PROCEDURE PARAMETER
        !            80: 
        !            81: echo "Procedure parameter: NULL\n";
        !            82: $s = oci_parse($c, "call lob_null_proc_in(4, :b)");
        !            83: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !            84: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !            85: $lob->writeTemporary(null);
        !            86: $r = @oci_execute($s);
        !            87: if (!$r) {
        !            88:     $m = oci_error($s);
        !            89:     echo $m['message'], "\n";
        !            90: }   
        !            91: else {
        !            92:     $lob->close();
        !            93: }
        !            94: 
        !            95: echo "Procedure parameter: ''\n";
        !            96: $s = oci_parse($c, "call lob_null_proc_in(5, :b)");
        !            97: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !            98: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !            99: $lob->writeTemporary('');
        !           100: $r = @oci_execute($s);
        !           101: if (!$r) {
        !           102:     $m = oci_error($s);
        !           103:     echo $m['message'], "\n";
        !           104: }   
        !           105: else {
        !           106:     $lob->close();
        !           107: }
        !           108: 
        !           109: echo "Procedure parameter: text\n";
        !           110: $s = oci_parse($c, "call lob_null_proc_in(6, :b)");
        !           111: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !           112: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !           113: $lob->writeTemporary('Inserted via procedure parameter');
        !           114: $r = @oci_execute($s);
        !           115: if (!$r) {
        !           116:     $m = oci_error($s);
        !           117:     echo $m['message'], "\n";
        !           118: }   
        !           119: else {
        !           120:     $lob->close();
        !           121: }
        !           122: 
        !           123: // RETURNING INTO
        !           124: 
        !           125: echo "RETURNING INTO: null\n";
        !           126: $s = oci_parse($c, "insert into lob_null_tab values (7, empty_clob()) returning data into :b");
        !           127: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !           128: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !           129: oci_execute($s, OCI_DEFAULT);  // Must have OCI_DEFAULT here so locator is still valid
        !           130: $lob->save(null);
        !           131: 
        !           132: echo "RETURNING INTO: ''\n";
        !           133: $s = oci_parse($c, "insert into lob_null_tab values (8, empty_clob()) returning data into :b");
        !           134: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !           135: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !           136: oci_execute($s, OCI_DEFAULT);  // Must have OCI_DEFAULT here so locator is still valid
        !           137: $lob->save('');
        !           138: 
        !           139: echo "RETURNING INTO: text\n";
        !           140: $s = oci_parse($c, "insert into lob_null_tab values (9, empty_clob()) returning data into :b");
        !           141: $lob = oci_new_descriptor($c, OCI_D_LOB);
        !           142: oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !           143: oci_execute($s, OCI_DEFAULT);  // Must have OCI_DEFAULT here so locator is still valid
        !           144: $lob->save('Inserted with RETURNING INTO');
        !           145: 
        !           146: echo "Fetch as string\n";
        !           147: $s = oci_parse ($c, 'select id, data from lob_null_tab order by id');
        !           148: oci_execute($s);
        !           149: oci_fetch_all($s, $res);
        !           150: var_dump($res);
        !           151: 
        !           152: echo "\nFetch as a descriptor\n";
        !           153: $s = oci_parse ($c, 'select id, data from lob_null_tab order by id');
        !           154: oci_execute($s);
        !           155: while ($arr = oci_fetch_assoc($s)) {
        !           156:     if (is_object($arr['DATA'])) {
        !           157:         echo $arr['ID'] . " is an object: ";
        !           158:         $r = $arr['DATA']->load();
        !           159:         var_dump($r);
        !           160:     }
        !           161:     else {
        !           162:         echo $arr['ID'] . " is not an object\n";
        !           163:     }
        !           164: }
        !           165: 
        !           166: echo "\nFetch via the procedure parameter\n";
        !           167: for ($i = 1; $i <= 9; $i++)
        !           168: {
        !           169:     $s = oci_parse ($c, "call lob_null_proc_out($i, :b)");
        !           170:     $lob = oci_new_descriptor($c, OCI_D_LOB);
        !           171:     oci_bind_by_name($s, ':b', $lob, -1, OCI_B_CLOB);
        !           172:     oci_execute($s);
        !           173:     if (is_object($lob)) {
        !           174:         echo $i . " is an object: ";
        !           175:         $r = $lob->load();
        !           176:         var_dump($r);
        !           177:     }
        !           178:     else {
        !           179:         echo $i . " is not an object\n";
        !           180:     }
        !           181: }
        !           182: 
        !           183: // Cleanup
        !           184: 
        !           185: $s = oci_parse($c, 'drop table lob_null_tab');
        !           186: @oci_execute($s);
        !           187: 
        !           188: echo "Done\n";
        !           189: 
        !           190: ?>
        !           191: --EXPECTF-- 
        !           192: Temporary CLOB: NULL
        !           193: Temporary CLOB: ''
        !           194: Temporary CLOB: text
        !           195: Procedure parameter: NULL
        !           196: Procedure parameter: ''
        !           197: Procedure parameter: text
        !           198: RETURNING INTO: null
        !           199: RETURNING INTO: ''
        !           200: RETURNING INTO: text
        !           201: Fetch as string
        !           202: array(2) {
        !           203:   ["ID"]=>
        !           204:   array(9) {
        !           205:     [0]=>
        !           206:     string(1) "1"
        !           207:     [1]=>
        !           208:     string(1) "2"
        !           209:     [2]=>
        !           210:     string(1) "3"
        !           211:     [3]=>
        !           212:     string(1) "4"
        !           213:     [4]=>
        !           214:     string(1) "5"
        !           215:     [5]=>
        !           216:     string(1) "6"
        !           217:     [6]=>
        !           218:     string(1) "7"
        !           219:     [7]=>
        !           220:     string(1) "8"
        !           221:     [8]=>
        !           222:     string(1) "9"
        !           223:   }
        !           224:   ["DATA"]=>
        !           225:   array(9) {
        !           226:     [0]=>
        !           227:     string(0) ""
        !           228:     [1]=>
        !           229:     string(0) ""
        !           230:     [2]=>
        !           231:     string(26) "Inserted via SQL statement"
        !           232:     [3]=>
        !           233:     string(0) ""
        !           234:     [4]=>
        !           235:     string(0) ""
        !           236:     [5]=>
        !           237:     string(32) "Inserted via procedure parameter"
        !           238:     [6]=>
        !           239:     string(0) ""
        !           240:     [7]=>
        !           241:     string(0) ""
        !           242:     [8]=>
        !           243:     string(28) "Inserted with RETURNING INTO"
        !           244:   }
        !           245: }
        !           246: 
        !           247: Fetch as a descriptor
        !           248: 1 is an object: string(0) ""
        !           249: 2 is an object: string(0) ""
        !           250: 3 is an object: string(26) "Inserted via SQL statement"
        !           251: 4 is an object: string(0) ""
        !           252: 5 is an object: string(0) ""
        !           253: 6 is an object: string(32) "Inserted via procedure parameter"
        !           254: 7 is an object: string(0) ""
        !           255: 8 is an object: string(0) ""
        !           256: 9 is an object: string(28) "Inserted with RETURNING INTO"
        !           257: 
        !           258: Fetch via the procedure parameter
        !           259: 1 is an object: string(0) ""
        !           260: 2 is an object: string(0) ""
        !           261: 3 is an object: string(26) "Inserted via SQL statement"
        !           262: 4 is an object: string(0) ""
        !           263: 5 is an object: string(0) ""
        !           264: 6 is an object: string(32) "Inserted via procedure parameter"
        !           265: 7 is an object: string(0) ""
        !           266: 8 is an object: string(0) ""
        !           267: 9 is an object: string(28) "Inserted with RETURNING INTO"
        !           268: Done

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