php-src/ext/oci8/tests/xmltype_01.phpt
Christopher Jones 4450386ae0 New tests
2007-08-30 17:33:00 +00:00

121 lines
2.3 KiB
PHP

--TEST--
Basic XMLType test
--SKIPIF--
<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
--FILE--
<?php
require(dirname(__FILE__)."/connect.inc");
// Initialization
$stmts = array(
"drop table xtt",
"create table xtt
(xt_id number, xt_spec xmltype)
xmltype xt_spec store as clob",
"insert into xtt (xt_id, xt_spec) values
(1,
xmltype('<?xml version=\"1.0\"?>
<Xt>
<XtId>1</XtId>
<Size>Big</Size>
<Area>12345</Area>
<Hardness>20</Hardness>
<Lip>Curved</Lip>
<Color>Red</Color>
<Nice>N</Nice>
<Compact>Tiny</Compact>
<Material>Steel</Material>
</Xt>'))"
);
foreach ($stmts as $q) {
$s = oci_parse($c, $q);
$r = @oci_execute($s);
if (!$r) {
$m = oci_error($s);
if ($m['code'] != 942) { // table or view doesn't exist
echo $m['message'], "\n";
}
}
}
function do_query($c)
{
$s = oci_parse($c, 'select XMLType.getClobVal(xt_spec)
from xtt where xt_id = 1');
oci_execute($s);
$row = oci_fetch_row($s);
$data = $row[0]->load();
var_dump($data);
return($data);
}
// Check
echo "Initial Data\n";
$data = do_query($c);
// Manipulate the data using SimpleXML
$sx = simplexml_load_string($data);
$sx->Hardness = $sx->Hardness - 1;
$sx->Nice = 'Y';
// Insert changes using a temporary CLOB
$s = oci_parse($c, 'update xtt
set xt_spec = XMLType(:clob)
where xt_id = 1');
$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();
// Verify
echo "Verify\n";
$data = do_query($c);
// Cleanup
$stmts = array(
"drop table xtt",
);
foreach ($stmts as $q) {
$s = oci_parse($c, $q);
@oci_execute($s);
}
echo "Done\n";
?>
--EXPECT--
Initial Data
string(250) "<?xml version="1.0"?>
<Xt>
<XtId>1</XtId>
<Size>Big</Size>
<Area>12345</Area>
<Hardness>20</Hardness>
<Lip>Curved</Lip>
<Color>Red</Color>
<Nice>N</Nice>
<Compact>Tiny</Compact>
<Material>Steel</Material>
</Xt>"
Verify
string(249) "<?xml version="1.0"?>
<Xt>
<XtId>1</XtId>
<Size>Big</Size>
<Area>12345</Area>
<Hardness>19</Hardness>
<Lip>Curved</Lip>
<Color>Red</Color>
<Nice>Y</Nice>
<Compact>Tiny</Compact>
<Material>Steel</Material>
</Xt>
"
Done