mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-15 16:38:54 +00:00
Add SQL XML examples (patch from Owain Jones, IBM)
git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@220965 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
parent
77bd29fe3e
commit
f16d648042
2 changed files with 370 additions and 2 deletions
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- $Revision: 1.7 $ -->
|
||||
<!-- $Revision: 1.8 $ -->
|
||||
<!-- Generated by xml_proto.php v2.2. Found in /scripts directory of phpdoc. -->
|
||||
<refentry id="function.db2-exec">
|
||||
<refnamediv>
|
||||
|
@ -181,6 +181,180 @@ Bubbles
|
|||
Gizmo
|
||||
Pook
|
||||
Rickety Ride
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<example>
|
||||
<title>Returning XML data as a SQL ResultSet</title>
|
||||
<para>
|
||||
The following example demonstrates how to work with documents stored
|
||||
in a XML column using the SAMPLE database. Using some pretty simple
|
||||
SQL/XML, this example returns some of the nodes in a XML document in
|
||||
a SQL ResultSet format that most users are familiar with.
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");
|
||||
|
||||
$query = 'SELECT * FROM XMLTABLE(
|
||||
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
|
||||
\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
|
||||
COLUMNS
|
||||
"CID" VARCHAR (50) PATH \'@Cid\',
|
||||
"NAME" VARCHAR (50) PATH \'name\',
|
||||
"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
|
||||
) AS T
|
||||
WHERE NAME = \'Kathy Smith\'
|
||||
';
|
||||
$stmt = db2_exec($conn, $query);
|
||||
|
||||
while($row = db2_fetch_object($stmt)){
|
||||
printf("$row->CID $row->NAME $row->PHONE\n");
|
||||
}
|
||||
db2_close($conn);
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
1000 Kathy Smith 416-555-1358
|
||||
1001 Kathy Smith 905-555-7258
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<example>
|
||||
<title>Performing a "JOIN" with XML data</title>
|
||||
<para>
|
||||
The following example works with documents stored in 2 differnt
|
||||
XML columns in the SAMPLE database. It creates 2 temporary
|
||||
tables from the XML documents from 2 different columns and
|
||||
returns a SQL ResultSet with information regarding shipping
|
||||
status for the customer.
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");
|
||||
|
||||
$query = '
|
||||
SELECT A.CID, A.NAME, A.PHONE, C.PONUM, C.STATUS
|
||||
FROM
|
||||
XMLTABLE(
|
||||
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
|
||||
\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
|
||||
COLUMNS
|
||||
"CID" BIGINT PATH \'@Cid\',
|
||||
"NAME" VARCHAR (50) PATH \'name\',
|
||||
"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
|
||||
) as A,
|
||||
PURCHASEORDER AS B,
|
||||
XMLTABLE (
|
||||
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
|
||||
\'db2-fn:xmlcolumn("PURCHASEORDER.PORDER")/PurchaseOrder\'
|
||||
COLUMNS
|
||||
"PONUM" BIGINT PATH \'@PoNum\',
|
||||
"STATUS" VARCHAR (50) PATH \'@Status\'
|
||||
) as C
|
||||
WHERE A.CID = B.CUSTID AND
|
||||
B.POID = C.PONUM AND
|
||||
A.NAME = \'Kathy Smith\'
|
||||
';
|
||||
|
||||
$stmt = db2_exec($conn, $query);
|
||||
|
||||
while($row = db2_fetch_object($stmt)){
|
||||
printf("$row->CID $row->NAME $row->PHONE $row->PONUM $row->STATUS\n");
|
||||
}
|
||||
|
||||
db2_close($conn);
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
1001 Kathy Smith 905-555-7258 5002 Shipped
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<example>
|
||||
<title>Returning SQL data as part of a larger XML document</title>
|
||||
<para>
|
||||
The following example works with a portion of the PRODUCT.DESCRIPTION
|
||||
documents in the SAMPLE database. It creates a XML document containing
|
||||
product description (XML data) and pricing info (SQL data).
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");
|
||||
|
||||
$query = '
|
||||
SELECT
|
||||
XMLSERIALIZE(
|
||||
XMLQUERY(\'
|
||||
declare boundary-space strip;
|
||||
declare default element namespace "http://posample.org";
|
||||
<promoList> {
|
||||
for $prod in $doc/product
|
||||
where $prod/description/price < 10.00
|
||||
order by $prod/description/price ascending
|
||||
return(
|
||||
<promoitem> {
|
||||
$prod,
|
||||
<startdate> {$start} </startdate>,
|
||||
<enddate> {$end} </enddate>,
|
||||
<promoprice> {$promo} </promoprice>
|
||||
} </promoitem>
|
||||
)
|
||||
} </promoList>
|
||||
\' passing by ref DESCRIPTION AS "doc",
|
||||
PROMOSTART as "start",
|
||||
PROMOEND as "end",
|
||||
PROMOPRICE as "promo"
|
||||
RETURNING SEQUENCE)
|
||||
AS CLOB (32000))
|
||||
AS NEW_PRODUCT_INFO
|
||||
FROM PRODUCT
|
||||
WHERE PID = \'100-100-01\'
|
||||
';
|
||||
|
||||
$stmt = db2_exec($conn, $query);
|
||||
|
||||
while($row = db2_fetch_array($stmt)){
|
||||
printf("$row[0]\n");
|
||||
}
|
||||
db2_close($conn);
|
||||
|
||||
?>
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
<promoList xmlns="http://posample.org">
|
||||
<promoitem>
|
||||
<product pid="100-100-01">
|
||||
<description>
|
||||
<name>Snow Shovel, Basic 22 inch</name>
|
||||
<details>Basic Snow Shovel, 22 inches wide, straight handle with D-Grip</details>
|
||||
<price>9.99</price>
|
||||
<weight>1 kg</weight>
|
||||
</description>
|
||||
</product>
|
||||
<startdate>2004-11-19</startdate>
|
||||
<enddate>2004-12-19</enddate>
|
||||
<promoprice>7.25</promoprice>
|
||||
</promoitem>
|
||||
</promoList>
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- $Revision: 1.6 $ -->
|
||||
<!-- $Revision: 1.7 $ -->
|
||||
<!-- Generated by xml_proto.php v2.2. Found in /scripts directory of phpdoc. -->
|
||||
<refentry id="function.db2-execute">
|
||||
<refnamediv>
|
||||
|
@ -135,8 +135,202 @@ I have 7 pets!
|
|||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<example>
|
||||
<title>Returning XML data as a SQL ResultSet</title>
|
||||
<para>
|
||||
The following example demonstrates how to work with documents stored
|
||||
in a XML column using the SAMPLE database. Using some pretty simple
|
||||
SQL/XML, this example returns some of the nodes in a XML document in
|
||||
a SQL ResultSet format that most users are familiar with.
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");
|
||||
|
||||
$query = 'SELECT * FROM XMLTABLE(
|
||||
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
|
||||
\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
|
||||
COLUMNS
|
||||
"CID" VARCHAR (50) PATH \'@Cid\',
|
||||
"NAME" VARCHAR (50) PATH \'name\',
|
||||
"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
|
||||
) AS T
|
||||
WHERE NAME = ?
|
||||
';
|
||||
|
||||
$stmt = db2_prepare($conn, $query);
|
||||
|
||||
$name = 'Kathy Smith';
|
||||
|
||||
if ($stmt) {
|
||||
db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
|
||||
db2_execute($stmt);
|
||||
|
||||
while($row = db2_fetch_object($stmt)){
|
||||
printf("$row->CID $row->NAME $row->PHONE\n");
|
||||
}
|
||||
}
|
||||
db2_close($conn);
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
1000 Kathy Smith 416-555-1358
|
||||
1001 Kathy Smith 905-555-7258
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<example>
|
||||
<title>Performing a "JOIN" with XML data</title>
|
||||
<para>
|
||||
The following example works with documents stored in 2 differnt
|
||||
XML columns in the SAMPLE database. It creates 2 temporary
|
||||
tables from the XML documents from 2 different columns and
|
||||
returns a SQL ResultSet with information regarding shipping
|
||||
status for the customer.
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");
|
||||
|
||||
$query = '
|
||||
SELECT A.CID, A.NAME, A.PHONE, C.PONUM, C.STATUS
|
||||
FROM
|
||||
XMLTABLE(
|
||||
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
|
||||
\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
|
||||
COLUMNS
|
||||
"CID" BIGINT PATH \'@Cid\',
|
||||
"NAME" VARCHAR (50) PATH \'name\',
|
||||
"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
|
||||
) as A,
|
||||
PURCHASEORDER AS B,
|
||||
XMLTABLE (
|
||||
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
|
||||
\'db2-fn:xmlcolumn("PURCHASEORDER.PORDER")/PurchaseOrder\'
|
||||
COLUMNS
|
||||
"PONUM" BIGINT PATH \'@PoNum\',
|
||||
"STATUS" VARCHAR (50) PATH \'@Status\'
|
||||
) as C
|
||||
WHERE A.CID = B.CUSTID AND
|
||||
B.POID = C.PONUM AND
|
||||
A.NAME = ?
|
||||
';
|
||||
|
||||
$stmt = db2_prepare($conn, $query);
|
||||
|
||||
$name = 'Kathy Smith';
|
||||
|
||||
if ($stmt) {
|
||||
db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
|
||||
db2_execute($stmt);
|
||||
|
||||
while($row = db2_fetch_object($stmt)){
|
||||
printf("$row->CID $row->NAME $row->PHONE $row->PONUM $row->STATUS\n");
|
||||
}
|
||||
}
|
||||
|
||||
db2_close($conn);
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
1001 Kathy Smith 905-555-7258 5002 Shipped
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
<example>
|
||||
<title>Returning SQL data as part of a larger XML document</title>
|
||||
<para>
|
||||
The following example works with a portion of the PRODUCT.DESCRIPTION
|
||||
documents in the SAMPLE database. It creates a XML document containing
|
||||
product description (XML data) and pricing info (SQL data).
|
||||
</para>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");
|
||||
|
||||
$query = '
|
||||
SELECT
|
||||
XMLSERIALIZE(
|
||||
XMLQUERY(\'
|
||||
declare boundary-space strip;
|
||||
declare default element namespace "http://posample.org";
|
||||
<promoList> {
|
||||
for $prod in $doc/product
|
||||
where $prod/description/price < 10.00
|
||||
order by $prod/description/price ascending
|
||||
return(
|
||||
<promoitem> {
|
||||
$prod,
|
||||
<startdate> {$start} </startdate>,
|
||||
<enddate> {$end} </enddate>,
|
||||
<promoprice> {$promo} </promoprice>
|
||||
} </promoitem>
|
||||
)
|
||||
} </promoList>
|
||||
\' passing by ref DESCRIPTION AS "doc",
|
||||
PROMOSTART as "start",
|
||||
PROMOEND as "end",
|
||||
PROMOPRICE as "promo"
|
||||
RETURNING SEQUENCE)
|
||||
AS CLOB (32000))
|
||||
AS NEW_PRODUCT_INFO
|
||||
FROM PRODUCT
|
||||
WHERE PID = ?
|
||||
';
|
||||
|
||||
$stmt = db2_prepare($conn, $query);
|
||||
|
||||
$pid = "100-100-01";
|
||||
|
||||
if ($stmt) {
|
||||
db2_bind_param($stmt, 1, "pid", DB2_PARAM_IN);
|
||||
db2_execute($stmt);
|
||||
|
||||
while($row = db2_fetch_array($stmt)){
|
||||
printf("$row[0]\n");
|
||||
}
|
||||
}
|
||||
|
||||
db2_close($conn);
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
<promoList xmlns="http://posample.org">
|
||||
<promoitem>
|
||||
<product pid="100-100-01">
|
||||
<description>
|
||||
<name>Snow Shovel, Basic 22 inch</name>
|
||||
<details>Basic Snow Shovel, 22 inches wide, straight handle with D-Grip</details>
|
||||
<price>9.99</price>
|
||||
<weight>1 kg</weight>
|
||||
</description>
|
||||
</product>
|
||||
<startdate>2004-11-19</startdate>
|
||||
<enddate>2004-12-19</enddate>
|
||||
<promoprice>7.25</promoprice>
|
||||
</promoitem>
|
||||
</promoList>
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
|
|
Loading…
Reference in a new issue