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

1.1       misho       1: --TEST--
                      2: Basic XMLType test #2
                      3: --SKIPIF--
                      4: <?php
                      5: $target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs
                      6: require(dirname(__FILE__).'/skipif.inc');
                      7: if (!extension_loaded("simplexml")) die ("skip no simplexml extension");
                      8: ?> 
                      9: --FILE--
                     10: <?php
                     11: 
                     12: require(dirname(__FILE__).'/connect.inc');
                     13: 
                     14: // Initialization
                     15: 
                     16: $stmtarray = array(
                     17:        "drop table xmltype_02_tab",
                     18:        "create table xmltype_02_tab (warehouse_id number, warehouse_spec xmltype)",
                     19: );
                     20: 
                     21: oci8_test_sql_execute($c, $stmtarray);
                     22: 
                     23: // Run Test
                     24: 
                     25: 
                     26: $id = 1;
                     27: 
                     28: // Delete any current entry
                     29: $s = oci_parse($c, "delete from xmltype_02_tab where warehouse_id = :id");
                     30: oci_bind_by_name($s, ':id', $id);
                     31: oci_execute($s);
                     32: 
                     33: // XML data to be inserted
                     34: $xml =<<<EOF
                     35: <?xml version="1.0"?>
                     36: <Warehouse>
                     37: <WarehouseId>1</WarehouseId>
                     38: <WarehouseName>Southlake, Texas</WarehouseName>
                     39: <Building>Owned</Building>
                     40: <Area>25000</Area>
                     41: <Docks>2</Docks>
                     42: <DockType>Rear load</DockType>
                     43: <WaterAccess>true</WaterAccess>
                     44: <RailAccess>N</RailAccess>
                     45: <Parking>Street</Parking>
                     46: <VClearance>10</VClearance>
                     47: </Warehouse>
                     48: EOF;
                     49: 
                     50: echo "Test 1 Insert new XML data using a temporary CLOB\n";
                     51: $s = oci_parse($c, 
                     52:     "insert into xmltype_02_tab (warehouse_id, warehouse_spec) 
                     53:      values (:id, XMLType(:clob))");
                     54: oci_bind_by_name($s, ':id', $id);
                     55: $lob = oci_new_descriptor($c, OCI_D_LOB);
                     56: oci_bind_by_name($s, ':clob', $lob, -1, OCI_B_CLOB);
                     57: $lob->writeTemporary($xml);
                     58: oci_execute($s);
                     59: $lob->close();
                     60: 
                     61: // Query the row back
                     62: $s = oci_parse($c, 'select xmltype.getclobval(warehouse_spec)
                     63:                     from xmltype_02_tab where warehouse_id = :id');
                     64: $r = oci_bind_by_name($s, ':id', $id);
                     65: oci_execute($s);
                     66: $row = oci_fetch_array($s, OCI_NUM);
                     67: 
                     68: var_dump($row);
                     69: 
                     70: echo "Test 2 Manipulate the data using SimpleXML\n";
                     71: 
                     72: $sx = simplexml_load_string((binary)$row[0]->load());
                     73: $row[0]->free();
                     74: var_dump($sx);
                     75: 
                     76: $sx->Docks -= 1;  // change the data
                     77: 
                     78: var_dump($sx);
                     79: 
                     80: echo "Test 3: Update changes using a temporary CLOB\n";
                     81: 
                     82: $s = oci_parse($c, 'update xmltype_02_tab
                     83:                     set warehouse_spec = XMLType(:clob)
                     84:                     where warehouse_id = :id');
                     85: oci_bind_by_name($s, ':id', $id);
                     86: $lob = oci_new_descriptor($c, OCI_D_LOB);
                     87: oci_bind_by_name($s, ':clob', $lob, -1, OCI_B_CLOB);
                     88: $lob->writeTemporary($sx->asXml());
                     89: oci_execute($s);
                     90: $lob->close();
                     91: 
                     92: // Query the changed row back and print it
                     93: $s = oci_parse($c, 'select xmltype.getclobval(warehouse_spec)
                     94:                     from xmltype_02_tab where warehouse_id = :id');
                     95: $r = oci_bind_by_name($s, ':id', $id);
                     96: oci_execute($s);
                     97: $row = oci_fetch_array($s, OCI_NUM);
                     98: var_dump($row[0]->load());
                     99: $row[0]->free();
                    100: 
                    101: // Clean up
                    102: 
                    103: $stmtarray = array(
                    104:        "drop table xmltype_02_tab"
                    105: );
                    106: 
                    107: oci8_test_sql_execute($c, $stmtarray);
                    108: 
                    109: ?>
                    110: ===DONE===
                    111: <?php exit(0); ?>
                    112: --EXPECTF--
                    113: Test 1 Insert new XML data using a temporary CLOB
                    114: array(1) {
                    115:   [0]=>
                    116:   object(OCI-Lob)#%d (1) {
                    117:     ["descriptor"]=>
                    118:     resource(%d) of type (oci8 descriptor)
                    119:   }
                    120: }
                    121: Test 2 Manipulate the data using SimpleXML
                    122: object(SimpleXMLElement)#%d (10) {
                    123:   ["WarehouseId"]=>
                    124:   string(1) "1"
                    125:   ["WarehouseName"]=>
                    126:   string(16) "Southlake, Texas"
                    127:   ["Building"]=>
                    128:   string(5) "Owned"
                    129:   ["Area"]=>
                    130:   string(5) "25000"
                    131:   ["Docks"]=>
                    132:   string(1) "2"
                    133:   ["DockType"]=>
                    134:   string(9) "Rear load"
                    135:   ["WaterAccess"]=>
                    136:   string(4) "true"
                    137:   ["RailAccess"]=>
                    138:   string(1) "N"
                    139:   ["Parking"]=>
                    140:   string(6) "Street"
                    141:   ["VClearance"]=>
                    142:   string(2) "10"
                    143: }
                    144: object(SimpleXMLElement)#%d (10) {
                    145:   ["WarehouseId"]=>
                    146:   string(1) "1"
                    147:   ["WarehouseName"]=>
                    148:   string(16) "Southlake, Texas"
                    149:   ["Building"]=>
                    150:   string(5) "Owned"
                    151:   ["Area"]=>
                    152:   string(5) "25000"
                    153:   ["Docks"]=>
                    154:   string(1) "1"
                    155:   ["DockType"]=>
                    156:   string(9) "Rear load"
                    157:   ["WaterAccess"]=>
                    158:   string(4) "true"
                    159:   ["RailAccess"]=>
                    160:   string(1) "N"
                    161:   ["Parking"]=>
                    162:   string(6) "Street"
                    163:   ["VClearance"]=>
                    164:   string(2) "10"
                    165: }
                    166: Test 3: Update changes using a temporary CLOB
                    167: string(%d) "<?xml version="1.0"?>
                    168: <Warehouse>
                    169: %sWarehouseId>1</WarehouseId>
                    170: %sWarehouseName>Southlake, Texas</WarehouseName>
                    171: %sBuilding>Owned</Building>
                    172: %sArea>25000</Area>
                    173: %sDocks>1</Docks>
                    174: %sDockType>Rear load</DockType>
                    175: %sWaterAccess>true</WaterAccess>
                    176: %sRailAccess>N</RailAccess>
                    177: %sParking>Street</Parking>
                    178: %sVClearance>10</VClearance>
                    179: </Warehouse>
                    180: "
                    181: ===DONE===

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