科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道利用DB2 9原生XML和PHP来简化XML应用程序

利用DB2 9原生XML和PHP来简化XML应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文讲述了模式演化对应用程序的影响,并通过使用情景向用户说明设置 PHP 环境的容易程度;将DB2原生XML 功能与PHP应用程序(包括用PHP和 XQuery编写的Web服务)集成的容易程度。

作者:Hardeep Singh 来源:IT专家网 2008年6月5日

关键字: IBM 数据库 DB2

  • 评论
  • 分享微博
  • 分享邮件

产品详细信息

用户单击商店列出的任何产品时,应用程序都会创建一个详细产品页面,其中包含该产品的说明、尺寸、价格和可能的附加图像等信息。


图 7. 产品详细信息
产品详细信息


DB2 Viper
创建产品详细信息的 XQuery 保存为存储过程。
用于创建产品详细信息的存储过程
用 SQL/PL 编写 getProduct 存储过程,其接受产品 ID 作为参数,并返回记录集的游标。这个存储过程主要执行 XQuery,其在页面一侧生成显示产品详细信息及其图片以及其他缩略图的版面。


CREATE PROCEDURE getProduct(IN id VARCHAR(10))
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
BEGIN
DECLARE c_cur CURSOR WITH RETURN FOR
SELECT XMLSERIALIZE(XMLQUERY(for $i in $t/product
let $thumb := $i/description/images/image[@type="thumbnail"]
let $name := $i/description/name/text()
let $details := $i/description/details/text()
let $price := $i/description/price
let $size := $i/description/size
return

{$name}


{ for $j in $i/description/images/image[@type != "thumbnail"][1] return


src="data/images/{$thumb}.jpg"
width="200"/>

}


Details: {$details}
Price: ${$price/text()}
Size: {$size/text()} {$size/@units/text()}

>Click here to Buy



{ for $j in $i/description/images/image[@type != "thumbnail"]
[position() != 1] return


onMouseout="document.mainPic.src=
data/images/{$i/description/images/image[@type !=
"thumbnail"][1]}.jpg''">



}


PASSING T.DESCRIPTION AS "t" RETURNING
SEQUENCE) AS CLOB(32K))
FROM xmlproduct T WHERE Pid = id;
OPEN c_cur;
END;
END

注意: XQuery 中的与号需要进行转义。这适用于所有特殊字符。
重点: 因为 XQuery 处理 XML 类型,所以所有返回的数据都将对特殊字符进行转义。解决此问题的一种方法是使用转型函数将查询的返回数据转型为 VARCHAR。
应用程序代码


$stmt = db2_prepare($conn, "CALL getProduct(?)");
db2_execute($stmt, array($pid));
list($product) = db2_fetch_array($stmt);
echo $product;

应用程序代码现在简化为对存储过程和将结果输出到浏览器的任务的简单调用。现在大多数应用程序代码都在数据库服务器中维护和运行。发现的另一个事实是,从存储过程查询数据比直接从代码执行查询简单,至少与其一样简单。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章