diff options
-rw-r--r-- | ext/oci8/tests/rowid_bind.phpt | 106 | ||||
-rw-r--r-- | ext/oci8/tests/xmltype_01.phpt | 149 |
2 files changed, 255 insertions, 0 deletions
diff --git a/ext/oci8/tests/rowid_bind.phpt b/ext/oci8/tests/rowid_bind.phpt new file mode 100644 index 0000000000..2865ced7d4 --- /dev/null +++ b/ext/oci8/tests/rowid_bind.phpt @@ -0,0 +1,106 @@ +--TEST-- +Test ROWID bind +--SKIPIF-- +<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?> +--FILE-- +<?php + +require(dirname(__FILE__)."/connect.inc"); + +function do_query($c) +{ + $s = oci_parse($c, 'select address from rid_tab order by id'); + $id = 1; + oci_execute($s, OCI_DEFAULT); + while ($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) { + var_dump($row); + } +} + +$stmts = array( + "drop table rid_tab", + "create table rid_tab (id number, address varchar2(40))", + "insert into rid_tab (id, address) values (1, 'original text #1')", + "insert into rid_tab (id, address) values (2, 'original text #2')" +); + +foreach ($stmts as $q) { + $s = oci_parse($c, $q); + @oci_execute($s); +} + +echo "Initial Data\n"; +do_query($c); + +$s = oci_parse($c, 'select rowid, address from rid_tab where id = :l_bv for update'); +$id = 1; +oci_bind_by_name($s, ':l_bv', $id); +oci_execute($s, OCI_DEFAULT); +$row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS); + +$rid = $row['ROWID']; +$addr = $row['ADDRESS']; + +$addr = 'Some new text'; + +// Save changes +$s = oci_parse($c,'update rid_tab set address = :a_bv where rowid = :r_bv'); +oci_bind_by_name($s, ':r_bv', $rid, -1, OCI_B_ROWID); +oci_bind_by_name($s, ':a_bv', $addr); +oci_execute($s); + +echo "Verify Change\n"; +do_query($c); + +// Cleanup + +$stmts = array("drop table rid_tab"); + +foreach ($stmts as $q) { + $s = oci_parse($c, $q); + @oci_execute($s); +} + +echo "Done\n"; + +?> +--EXPECT-- +Initial Data +array(1) { + ["ADDRESS"]=> + string(16) "original text #1" +} +array(1) { + ["ADDRESS"]=> + string(16) "original text #2" +} +Verify Change +array(1) { + ["ADDRESS"]=> + string(13) "Some new text" +} +array(1) { + ["ADDRESS"]=> + string(16) "original text #2" +} +Done +--UEXPECT-- +Initial Data +array(1) { + [u"ADDRESS"]=> + unicode(16) "original text #1" +} +array(1) { + [u"ADDRESS"]=> + unicode(16) "original text #2" +} +Verify Change +array(1) { + [u"ADDRESS"]=> + unicode(13) "Some new text" +} +array(1) { + [u"ADDRESS"]=> + unicode(16) "original text #2" +} +Done diff --git a/ext/oci8/tests/xmltype_01.phpt b/ext/oci8/tests/xmltype_01.phpt new file mode 100644 index 0000000000..22313f8a4f --- /dev/null +++ b/ext/oci8/tests/xmltype_01.phpt @@ -0,0 +1,149 @@ +--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 +--UEXPECT-- +Initial Data +unicode(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 +unicode(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 |