狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

Oracle XQuery查詢、構(gòu)建與轉(zhuǎn)換XML(4)

Oracle XQuery查詢、構(gòu)建與轉(zhuǎn)換XML(4)

更新時(shí)間:2024-04-12 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

將動(dòng)態(tài)變量綁定到 XQuery 表達(dá)式

另一種可以顯著提高 XQuery 表達(dá)式執(zhí)行性能的技術(shù)是使用綁定動(dòng)態(tài)變量。使用綁定變量(而不是將變量串聯(lián)為字符串)可以使 Oracle 重用 SQL 語句,從而減少分析開銷并顯著提高應(yīng)用程序的性能。可以在 XMLQuery 和 XMLTable SQL 函數(shù)中使用 PASSING 子句將動(dòng)態(tài)變量綁定到 XQuery 表達(dá)式。該技術(shù)使您可以根據(jù)客戶端代碼中計(jì)算的參數(shù)動(dòng)態(tài)生成 XML。列表 3 中的示例演示了如何在從 PHP 腳本執(zhí)行的 XQuery 查詢中使用綁定變量。

列表 3:使用綁定變量



//File:BindVars.php

$user = 'hr';

$pswd = 'hr';

$db ='(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))

)

(CONNECT_DATA=(SID=orclR2)(SERVER=DEDICATED))

)';

$empno=100;

$conn = oci_connect($user, $pswd, $db);

$sql = 'SELECT XMLQuery('."'".'for $i in ora:view("employees")/ROW

where $i/EMPLOYEE_ID = $empno

return (

{$i/EMPLOYEE_ID,

$i/EMAIL,

$i/JOB_ID}

)'."'".'PASSING XMLElement("empno", :empno) AS "empno"

RETURNING CONTENT).GetStringVal() AS RESULT FROM DUAL';

$query = oci_parse($conn, $sql);

oci_bind_by_name($query, ":empno", $empno, 3);

oci_execute($query);

oci_fetch($query);

$str = oci_result($query, 'RESULT');

print $str;

?>
列表 3 中顯示的腳本應(yīng)生成以下輸出(注意,瀏覽器中可能不會(huì)顯示標(biāo)記):
100

SKING

AD_PRES

XQuery 與 XSLT

盡管 Oracle 在 Oracle XML DB 中提供了一個(gè)自帶 XSLT 處理器,但在很多情況下(尤其是在處理大型文檔時(shí)),XQuery 對(duì)于構(gòu)建 XML 更高效。此外,XQuery 表達(dá)式通常比為同一作業(yè)設(shè)計(jì)的 XSLT 樣式表更具可讀性,并且更清楚。與 XSLT 一樣,XQuery 不但可用于將一個(gè) XML 文檔轉(zhuǎn)換為另一個(gè) XML 文檔,而且還可用于將 XML 轉(zhuǎn)換為另一種基于文本的格式,如 HTML 或 WML。

在本文前面的查詢 XMLType 數(shù)據(jù)部分中,您看到了一個(gè)有關(guān)使用 XQuery 將一個(gè) XML 文檔轉(zhuǎn)換為另一個(gè) XML 文檔的示例。具體而言,該示例使用 XQuery 表達(dá)式計(jì)算示例數(shù)據(jù)庫模式 OE 的 purchaseorder 表中存儲(chǔ)的訂單的訂單總計(jì),然后為處理的每個(gè)訂單生成了一個(gè) OrderTotal XML 元素。實(shí)際上,您可以使用 XSLT 執(zhí)行相同操作。為此,您首先需要?jiǎng)?chuàng)建一個(gè)應(yīng)用于 PurchaseOrder XML 文檔的 XSLT 樣式表,以生成相應(yīng)的 OrderTotal 元素。對(duì)于此示例,可以使用列表 4 中所示的 XSLT 樣式表。

列表 4:使用 XSLT 計(jì)算小計(jì)總和 (Quantity * UnitPrice)



http://www.w3.org/1999/XSL/Transform" version="1.0">































































為方便起見,您可能需要將此 XSL 樣式表保存在數(shù)據(jù)庫中,然后再開始使用它。例如,您可以將樣式表作為文件資源保存在 Oracle XML DB 信息庫中。執(zhí)行該操作的方法之一是將樣式表作為文件保存到本地文件系統(tǒng)中,然后使用以下某個(gè)互聯(lián)網(wǎng)協(xié)議將它移動(dòng)到 XML 信息庫:FTP、HTTP 或 WebDAV。假設(shè)您已經(jīng)將列表 4 中的 XSLT 樣式表作為 orderTotal.xsl 保存在 /public 信息庫文件夾中,現(xiàn)在可以按以下示例所示將它用作 XMLTransform SQL 函數(shù)的參數(shù)(假設(shè)您以 OE/OE 的身份登錄):

SELECT XMLTRANSFORM(OBJECT_VALUE,

xdbUriType('/public/orderTotal.xsl').getXML()).GetStringVal() AS RESULT FROM

purchaseorder WHERE existsNode(OBJECT_VALUE,
'/PurchaseOrder[User = "EABEL"]') = 1;

以上查詢將處理用戶 EABEL 請求的所有訂單(即存儲(chǔ)在 XMLType 的默認(rèn) PurchaseOrder 表中的訂單)并將生成與查詢 XMLType 數(shù)據(jù)部分中的 XQuery 查詢相同的輸出。

將列表 4 中的 orderTotal XSLT 樣式表與查詢 XMLType 數(shù)據(jù)部分中的示例使用的 XQuery 表達(dá)式進(jìn)行比較,您可能會(huì)注意到,XQuery 方法要比 XSLT 方法更具吸引力。至少在使用 XQuery 時(shí),您只需編寫很少的代碼即可獲得相同的最終結(jié)果。

查詢 RSS 新聞提供

由于 RSS 新聞提供本質(zhì)上是一個(gè)托管的 XML 文件(RSS 新聞閱讀器從中獲取頭條新聞或其他內(nèi)容),因此可以像處理任何其他可以通過 Web 獲得的 XML 文檔那樣來處理它。正如您在本文前面的查詢外部數(shù)據(jù)源部分中所見,可以使用 XQuery 查詢?nèi)魏慰梢酝ㄟ^ URL 訪問的 XML。您通過 XMLTable 和 XMLQuery SQL 函數(shù)中的 PASSING 子句動(dòng)態(tài)綁定所有外部 XML 數(shù)據(jù)源。以下是一個(gè)查詢 RSS 新聞提供的 XQuery 示例:

SELECT XMLQuery(

'for $i in $h//channel

return;



{$i/lastBuildDate}



{for $j in $h//item

where ora:contains($j, "PHP")

return {($j/title, $j/link)}}



'

PASSING xmlparse (document httpuritype

('http://www.oracle.com/technology/syndication/rss_otn_news.xml').getCLOB()) as "h"

RETURNING CONTENT).getStringVal() as RESULT FROM DUAL;

該 XQuery 應(yīng)生成一個(gè) XML 文檔,其中包含 Oracle 技術(shù)網(wǎng) (OTN) 最近發(fā)布的與 PHP 技術(shù)相關(guān)的頭條新聞列表。所生成的 XML 文檔可能如下所示:



Tue, 01 Nov 2005 19:37:42 GMT





http://www.oracle.com/technology/xe





http://www.oracle.com/technology/pub/articles/oracle_php_cookbook





http://www.oracle.com/technology/tech/php/zendcore/index.html





但在開發(fā)實(shí)際應(yīng)用程序時(shí),您將很可能需要 XQuery 表達(dá)式直接生成 HTML 標(biāo)記,而不是僅僅生成一個(gè)如上所示的 XML 文檔。這樣,您便可以構(gòu)建一個(gè)更靈活、可維護(hù)性更高的應(yīng)用程序,原因是在這種情況下,所有 RSS 處理(從提取必要的數(shù)據(jù)到將它包裝在 HTML 標(biāo)記中)都將轉(zhuǎn)移到數(shù)據(jù)庫。這使您不必編寫負(fù)責(zé) RSS 處理的應(yīng)用程序代碼。實(shí)際上這意味著您不必在諸如 RSS 新聞提供的結(jié)構(gòu)已經(jīng)更改的情況下修改應(yīng)用程序代碼。相反,您只需修改用于 RSS 處理的 XQuery 表達(dá)式。

總結(jié)

您已經(jīng)在本文了解到,XQuery 是一個(gè)綜合的查詢語言,它提供了一種用于查詢、構(gòu)建和轉(zhuǎn)換 XML 數(shù)據(jù)的高效方法。盡管 Oracle XQuery 實(shí)施使您可以操作任何可以用 XML 表示的數(shù)據(jù)(無論它存儲(chǔ)在數(shù)據(jù)庫中、位于網(wǎng)站上還是存儲(chǔ)在文件系統(tǒng)中),但將處理的數(shù)據(jù)移動(dòng)到數(shù)據(jù)庫中始終是一個(gè)不錯(cuò)的主意。對(duì)于數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù),Oracle XML DB(對(duì) XPath 重寫使用同一機(jī)制)只能顯著優(yōu)化處理那些基于以下數(shù)據(jù)構(gòu)建的 XQuery 表達(dá)式:這些數(shù)據(jù)包括關(guān)系數(shù)據(jù)、對(duì)象-關(guān)系數(shù)據(jù)或使用結(jié)構(gòu)化(對(duì)象-關(guān)系)存儲(chǔ)技術(shù)存儲(chǔ)的基于 XML 模式的 XMLType 數(shù)據(jù)。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
亚洲男人影院| 国模一区二区三区白浆| 日韩成人免费在线| 成人av资源站| 在线综合欧美| 日韩视频一区二区三区在线播放| 国产婷婷一区二区| 日韩av一区二区在线影视| 成人激情电影免费在线观看| 最新成人av网站| 欧美一区二区三区爱爱| 亚洲欧美日韩一区二区| 亚洲国产成人av网| 一区二区精品国产| 欧美性猛交xxxx黑人交 | 国产精品色在线观看| 久久综合色天天久久综合图片| 亚洲色图在线播放| 美国十次综合导航| 国产日韩欧美在线播放不卡| 欧美一区二视频| 国产精品视频免费一区| 欧美成人性战久久| 爽爽淫人综合网网站| 97精品久久久午夜一区二区三区| 久久精品系列| 国产精品你懂的在线欣赏| 精品伊人久久久久7777人| 亚洲欧洲日本国产| 精品久久久网站| 免费在线一区观看| 欧美猛男gaygay网站| 国产精品视频一二三| 国产一区二区三区在线观看精品 | 欧美系列日韩一区| 亚洲综合网站在线观看| 91免费观看在线| 91精品国产综合久久久久久漫画| 亚洲18女电影在线观看| 在线观看成人av| 久久九九全国免费| 国产盗摄女厕一区二区三区 | 日产精品久久久久久久性色 | 亚洲妇熟xx妇色黄| 国内精品久久久久久久影视麻豆| 欧美videos大乳护士334| 蜜桃av一区二区三区电影| 国产精品入口66mio| 成人免费在线视频| 欧美国产综合| 国产性色一区二区| av毛片久久久久**hd| 欧美一级国产精品| 国产福利一区在线| 欧美男同性恋视频网站| 免费国产亚洲视频| 色婷婷av一区二区三区大白胸| 亚洲一区二区三区中文字幕| 韩国在线一区| 亚洲天堂精品视频| 亚洲国产专区| 伊人一区二区三区| 正在播放亚洲| 亚洲夂夂婷婷色拍ww47| 亚洲一区二区精品在线| 亚洲图片自拍偷拍| 国产精品视频| 午夜国产精品影院在线观看| 久久久福利视频| 日本欧美一区二区三区| 在线观看av不卡| 国产中文字幕一区| 欧美大黄免费观看| 女人色偷偷aa久久天堂| 成人免费在线观看入口| 国产亚洲福利| 美女www一区二区| 欧美日韩国产天堂| 国产99久久久国产精品潘金| 精品国精品国产尤物美女| 风流少妇一区二区| 精品国产一二三区| 欧美深夜福利| 亚洲在线视频网站| 欧美亚洲一区二区在线观看| 精品亚洲porn| 2022国产精品视频| 亚洲国产精品久久久久婷婷老年| 一区二区理论电影在线观看| 91国偷自产一区二区三区成为亚洲经典| 日韩高清国产一区在线| 欧美日韩电影在线播放| 成人激情视频网站| 中文字幕一区二区三区视频| 久久久99国产精品免费| 国产一区二区免费视频| 国产欧美中文在线| 国产精品久久久久久久免费软件| 免费观看在线综合| 26uuu精品一区二区| 99亚洲视频| 国产一区二区三区免费观看| 26uuu成人网一区二区三区| 91久久精品国产91久久性色tv| 日韩av网站免费在线| 欧美zozozo| 亚洲欧美国产不卡| 高清在线观看日韩| 亚洲男人的天堂一区二区| 欧美日韩亚洲丝袜制服| 色综合天天狠狠| 午夜电影网亚洲视频| 日韩一区二区麻豆国产| 亚洲国产一区二区在线| 激情文学综合插| 中文字幕一区二区三区四区不卡 | 成人av集中营| 亚洲电影在线播放| 精品女同一区二区| 久久久久久婷| 欧美日韩18| 久久99日本精品| 亚洲欧美怡红院| 欧美一级片免费看| 午夜综合激情| 欧美aⅴ99久久黑人专区| 奇米精品一区二区三区四区| 中文字幕精品一区二区三区精品 | 国产成人激情av| 亚洲国产精品人人做人人爽| 精品欧美一区二区三区精品久久| 久久久久久九九九九| 色综合久久综合中文综合网| 日本不卡一区二区三区| 亚洲欧美综合色| 精品国产麻豆免费人成网站| 久久亚洲高清| 亚洲免费播放| 91免费国产在线| 国产成人精品三级| 青青青爽久久午夜综合久久午夜| 国产精品二三区| 精品国产青草久久久久福利| 欧美性xxxxxxxx| 国产精品一区亚洲| 激情91久久| 午夜久久黄色| 成人丝袜高跟foot| 精品在线视频一区| 免费观看一级欧美片| 亚洲国产日韩一级| 亚洲免费av高清| 国产精品传媒入口麻豆| 国产日韩在线不卡| 欧美精品一区二区三区视频| 7777精品伊人久久久大香线蕉完整版 | 在线一区二区视频| 国产农村妇女精品一二区| 国产一区二区三区无遮挡| 99国产精品久久久久久久久久| 国产精品一区二区黑丝| 久久精品99国产精品| 五月天一区二区| 亚洲va在线va天堂| 亚洲香蕉伊在人在线观| 亚洲一区影音先锋| 樱桃国产成人精品视频| 亚洲日本在线看| 亚洲美女区一区| 亚洲欧美日韩系列| 亚洲欧美一区二区三区孕妇| 成人免费在线视频| 亚洲色图在线看| 亚洲精品日韩一| 亚洲精品中文在线影院| 亚洲精品久久久蜜桃| 亚洲少妇中出一区| 亚洲男人的天堂在线观看| 亚洲激情网站免费观看| 亚洲乱码中文字幕| 亚洲国产美女搞黄色| 丝袜国产日韩另类美女| 日本中文字幕一区二区有限公司| 亚洲va欧美va国产va天堂影院| 亚洲成a人v欧美综合天堂下载| 午夜伊人狠狠久久| 久久国产麻豆精品| 东方aⅴ免费观看久久av| 99精品久久99久久久久| 红桃视频亚洲| 亚洲一区欧美二区| 欧美视频你懂的| 日韩午夜电影av| 久久―日本道色综合久久| 中文乱码免费一区二区| 亚洲人成小说网站色在线| 亚洲成人综合视频| 国产一区二区三区最好精华液| 国产成人av网站| 欧美私人啪啪vps|