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