![]() ![]() | ![]() |
1.1 misho 1: --TEST--
2: Basic XMLType test
3: --SKIPIF--
4: <?php
5: if (!extension_loaded("simplexml")) die("skip no simplexml extension");
6: $target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
7: require(dirname(__FILE__).'/skipif.inc');
1.1.1.2 ! misho 8: ?>
1.1 misho 9: --FILE--
10: <?php
11:
12: require(dirname(__FILE__)."/connect.inc");
13:
14: // Initialization
15:
16: $stmtarray = array(
17: "drop table xtt",
18: "create table xtt
19: (xt_id number, xt_spec xmltype)
20: xmltype xt_spec store as clob",
21: "insert into xtt (xt_id, xt_spec) values
22: (1,
23: xmltype('<?xml version=\"1.0\"?>
24: <Xt>
25: <XtId>1</XtId>
26: <Size>Big</Size>
27: <Area>12345</Area>
28: <Hardness>20</Hardness>
29: <Lip>Curved</Lip>
30: <Color>Red</Color>
31: <Nice>N</Nice>
32: <Compact>Tiny</Compact>
33: <Material>Steel</Material>
34: </Xt>'))"
35: );
36:
37: oci8_test_sql_execute($c, $stmtarray);
38:
39: function do_query($c)
40: {
41: $s = oci_parse($c, 'select XMLType.getClobVal(xt_spec)
42: from xtt where xt_id = 1');
43: oci_execute($s);
44: $row = oci_fetch_row($s);
45: $data = $row[0]->load();
46: var_dump($data);
47: return($data);
48: }
49:
50: // Check
51: echo "Initial Data\n";
52: $data = do_query($c);
53:
54: // Manipulate the data using SimpleXML
55: $sx = simplexml_load_string($data);
56: $sx->Hardness = $sx->Hardness - 1;
57: $sx->Nice = 'Y';
58:
59: // Insert changes using a temporary CLOB
60: $s = oci_parse($c, 'update xtt
61: set xt_spec = XMLType(:clob)
62: where xt_id = 1');
63: $lob = oci_new_descriptor($c, OCI_D_LOB);
64: oci_bind_by_name($s, ':clob', $lob, -1, OCI_B_CLOB);
65: $lob->writeTemporary($sx->asXml());
66: oci_execute($s);
67: $lob->close();
68:
69: // Verify
70: echo "Verify\n";
71: $data = do_query($c);
72:
73: // Cleanup
74:
75: $stmtarray = array(
76: "drop table xtt",
77: );
78:
79: oci8_test_sql_execute($c, $stmtarray);
80:
81: echo "Done\n";
82:
83: ?>
84: --EXPECT--
85: Initial Data
86: string(250) "<?xml version="1.0"?>
87: <Xt>
88: <XtId>1</XtId>
89: <Size>Big</Size>
90: <Area>12345</Area>
91: <Hardness>20</Hardness>
92: <Lip>Curved</Lip>
93: <Color>Red</Color>
94: <Nice>N</Nice>
95: <Compact>Tiny</Compact>
96: <Material>Steel</Material>
97: </Xt>"
98: Verify
99: string(249) "<?xml version="1.0"?>
100: <Xt>
101: <XtId>1</XtId>
102: <Size>Big</Size>
103: <Area>12345</Area>
104: <Hardness>19</Hardness>
105: <Lip>Curved</Lip>
106: <Color>Red</Color>
107: <Nice>Y</Nice>
108: <Compact>Tiny</Compact>
109: <Material>Steel</Material>
110: </Xt>
111: "
112: Done