xref: /PHP-7.3/ext/oci8/tests/xmltype_01.phpt (revision a2c0f872)
1--TEST--
2Basic XMLType test
3--SKIPIF--
4<?php
5if (!extension_loaded("simplexml")) die("skip no simplexml extension");
6$target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs
7require(dirname(__FILE__).'/skipif.inc');
8?>
9--FILE--
10<?php
11
12require(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
37oci8_test_sql_execute($c, str_replace("\r", "", $stmtarray));
38
39function 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
51echo "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);
64oci_bind_by_name($s, ':clob', $lob, -1, OCI_B_CLOB);
65$lob->writeTemporary($sx->asXml());
66oci_execute($s);
67$lob->close();
68
69// Verify
70echo "Verify\n";
71$data = do_query($c);
72
73// Cleanup
74
75$stmtarray = array(
76	"drop table xtt",
77);
78
79oci8_test_sql_execute($c, $stmtarray);
80
81echo "Done\n";
82
83?>
84--EXPECT--
85Initial Data
86string(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>"
98Verify
99string(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"
112Done
113