--TEST-- Basic XMLType test #2 --SKIPIF-- true, 'timesten' => false); // test runs on these DBs require(dirname(__FILE__).'/skipif.inc'); if (!extension_loaded("simplexml")) die ("skip no simplexml extension"); ?> --FILE-- 1 Southlake, Texas Owned 25000 2 Rear load true N Street 10 EOF; echo "Test 1 Insert new XML data using a temporary CLOB\n"; $s = oci_parse($c, "insert into xmltype_02_tab (warehouse_id, warehouse_spec) values (:id, XMLType(:clob))"); oci_bind_by_name($s, ':id', $id); $lob = oci_new_descriptor($c, OCI_D_LOB); oci_bind_by_name($s, ':clob', $lob, -1, OCI_B_CLOB); $lob->writeTemporary($xml); oci_execute($s); $lob->close(); // Query the row back $s = oci_parse($c, 'select xmltype.getclobval(warehouse_spec) from xmltype_02_tab where warehouse_id = :id'); $r = oci_bind_by_name($s, ':id', $id); oci_execute($s); $row = oci_fetch_array($s, OCI_NUM); var_dump($row); echo "Test 2 Manipulate the data using SimpleXML\n"; $sx = simplexml_load_string((binary)$row[0]->load()); $row[0]->free(); var_dump($sx); $sx->Docks -= 1; // change the data var_dump($sx); echo "Test 3: Update changes using a temporary CLOB\n"; $s = oci_parse($c, 'update xmltype_02_tab set warehouse_spec = XMLType(:clob) where warehouse_id = :id'); oci_bind_by_name($s, ':id', $id); $lob = oci_new_descriptor($c, OCI_D_LOB); oci_bind_by_name($s, ':clob', $lob, -1, OCI_B_CLOB); $lob->writeTemporary($sx->asXml()); oci_execute($s); $lob->close(); // Query the changed row back and print it $s = oci_parse($c, 'select xmltype.getclobval(warehouse_spec) from xmltype_02_tab where warehouse_id = :id'); $r = oci_bind_by_name($s, ':id', $id); oci_execute($s); $row = oci_fetch_array($s, OCI_NUM); var_dump($row[0]->load()); $row[0]->free(); // Clean up $stmtarray = array( "drop table xmltype_02_tab" ); oci8_test_sql_execute($c, $stmtarray); ?> ===DONE=== --EXPECTF-- Test 1 Insert new XML data using a temporary CLOB array(1) { [0]=> object(OCI-Lob)#%d (1) { ["descriptor"]=> resource(%d) of type (oci8 descriptor) } } Test 2 Manipulate the data using SimpleXML object(SimpleXMLElement)#%d (10) { ["WarehouseId"]=> string(1) "1" ["WarehouseName"]=> string(16) "Southlake, Texas" ["Building"]=> string(5) "Owned" ["Area"]=> string(5) "25000" ["Docks"]=> string(1) "2" ["DockType"]=> string(9) "Rear load" ["WaterAccess"]=> string(4) "true" ["RailAccess"]=> string(1) "N" ["Parking"]=> string(6) "Street" ["VClearance"]=> string(2) "10" } object(SimpleXMLElement)#%d (10) { ["WarehouseId"]=> string(1) "1" ["WarehouseName"]=> string(16) "Southlake, Texas" ["Building"]=> string(5) "Owned" ["Area"]=> string(5) "25000" ["Docks"]=> string(1) "1" ["DockType"]=> string(9) "Rear load" ["WaterAccess"]=> string(4) "true" ["RailAccess"]=> string(1) "N" ["Parking"]=> string(6) "Street" ["VClearance"]=> string(2) "10" } Test 3: Update changes using a temporary CLOB string(%d) " %sWarehouseId>1 %sWarehouseName>Southlake, Texas %sBuilding>Owned %sArea>25000 %sDocks>1 %sDockType>Rear load %sWaterAccess>true %sRailAccess>N %sParking>Street %sVClearance>10 " ===DONE===