狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
男女男精品视频网| 欧美日韩国产综合在线| 亚洲视频1区2区| 久久精品亚洲精品国产欧美kt∨| 色天使久久综合网天天| 亚洲手机在线| 国内一区二区三区在线视频| 97精品久久久午夜一区二区三区 | 国产不卡视频在线观看| 捆绑紧缚一区二区三区视频 | 久久看片网站| 久久久久国产精品一区二区| 久久人人97超碰人人澡爱香蕉| 美脚丝袜一区二区三区在线观看| 午夜影院日韩| 国产视频一区三区| 国产亚洲激情| 欧美系列一区二区| 日韩一区二区三区四区| 久久久www免费人成精品| 国产精品视频观看| 亚洲午夜精品一区二区三区他趣| 亚洲成av人在线观看| 麻豆精品一区二区av白丝在线| 狠狠色狠狠色综合日日91app| 国产成人精品aa毛片| 欧美色综合网| 色香蕉成人二区免费| 日韩午夜激情视频| 中文字幕精品—区二区四季| 亚洲一区二区三区四区五区黄| 日本伊人午夜精品| 成人高清在线视频| 最新亚洲一区| 欧美精品久久一区二区三区| 久久久www免费人成精品| 亚洲精品福利视频网站| 午夜精品视频在线观看| 看电视剧不卡顿的网站| 91在线视频观看| 国产毛片一区| 欧美成人精品福利| 亚洲免费毛片网站| 久久精品毛片| 欧美变态tickle挠乳网站| 精品影视av免费| 欧美性三三影院| 91一区二区三区在线播放| 欧美色图麻豆| 欧美日韩国产成人在线91| 日韩一区中文字幕| 久久99精品久久久久久久久久久久| 91亚洲国产成人精品一区二区三| 久久国产精品久久w女人spa| 日韩精品一区二| 日韩专区中文字幕一区二区| 91在线码无精品| 欧美日韩一级黄| 亚洲男人的天堂在线观看| 国产在线精品一区二区| 国产精品色网| 欧美国产精品专区| 青青草国产精品亚洲专区无| 99这里只有久久精品视频| 久久综合五月| 亚洲欧美综合网| 成人av在线资源网| 欧美系列在线观看| 亚洲一区在线观看网站| 99久免费精品视频在线观看 | 一区二区久久久| 99久久精品情趣| 777午夜精品免费视频| 午夜伦理一区二区| 亚洲免费久久| 国产片一区二区| 成人伦理片在线| 宅男噜噜噜66一区二区66| 亚洲黄色在线视频| 成人国产精品免费| 欧美一区二区三区视频免费| 同产精品九九九| 亚洲专区一区| 亚洲精品成人在线| 激情亚洲网站| 国产精品视频一二三| av激情综合网| 欧美精品一区二区精品网| 国产一区二区三区综合| 91久久精品一区二区二区| 国产日韩一区二区三区在线| 国产精品国产三级国产aⅴ中文| 午夜亚洲性色视频| 国产毛片精品国产一区二区三区| 亚洲成人在线观看视频| caoporn国产一区二区| 精品免费视频一区二区| 成人av网址在线| 精品成人一区二区三区四区| 粉嫩一区二区三区性色av| 欧美电影免费观看高清完整版在线 | 国产高清在线观看免费不卡| 欧美日韩国产小视频在线观看| 免费成人在线影院| 在线精品视频免费播放| 婷婷综合另类小说色区| 日本黄色一区二区| 精品写真视频在线观看| 欧美精品少妇一区二区三区| 久久99在线观看| 91精品国产综合久久香蕉麻豆| 国产精品自拍一区| 精品国产91亚洲一区二区三区婷婷| 成人av电影在线观看| 国产日韩欧美精品在线| 狠狠干成人综合网| 亚洲综合另类小说| 91传媒视频在线播放| 国产一区二区三区四区五区美女| 555夜色666亚洲国产免| 99精品欧美一区二区三区小说| 国产亚洲成年网址在线观看| 精品91免费| 亚洲一级二级三级| 亚洲欧美日韩电影| 久久福利电影| 亚洲午夜久久久久久尤物| 国产一区二区三区在线观看精品| 欧美日韩免费| 久久久久国产精品麻豆| 在线精品观看| 久久激情五月激情| 久久久久9999亚洲精品| 国产视频亚洲| 国产激情精品久久久第一区二区| 欧美国产一区二区| 色哟哟在线观看一区二区三区| 国产电影精品久久禁18| 国产精品久99| 欧美色视频一区| 午夜精品免费| 婷婷综合另类小说色区| 久久亚洲综合av| 裸体一区二区| 91麻豆蜜桃一区二区三区| 洋洋av久久久久久久一区| 欧美精品在线一区二区| 影音先锋亚洲一区| 国内精品伊人久久久久av一坑| 国产日韩精品一区二区三区在线| 免费日韩视频| 99精品桃花视频在线观看| 亚洲18色成人| 亚洲国产精品激情在线观看| 在线免费精品视频| 激情久久久久久久| 国产成人精品免费视频网站| 亚洲制服丝袜av| 精品国产髙清在线看国产毛片| 国产亚洲综合精品| 99久久免费国产| 麻豆成人久久精品二区三区小说| 国产精品大尺度| 欧美大片在线观看一区| 久久久av水蜜桃| 色综合天天做天天爱| 另类专区欧美蜜桃臀第一页| 亚洲欧洲日产国产综合网| 日韩欧美一二三| 欧洲一区二区三区在线| 日韩一区二区久久| 欧美成人69| 成人亚洲精品久久久久软件| 视频一区视频二区中文| 成人欧美一区二区三区白人| 精品久久一二三区| 5858s免费视频成人| 日本久久一区二区| 国产亚洲一区在线| 伊人色综合久久天天五月婷| 成人小视频免费在线观看| 毛片av一区二区三区| 亚洲一二三级电影| 自拍偷在线精品自拍偷无码专区 | 美女高潮久久久| 亚洲国产色一区| 亚洲精品免费在线观看| 欧美国产日韩a欧美在线观看| 日韩欧美国产成人一区二区| 欧美视频三区在线播放| 色999日韩国产欧美一区二区| 国产精品最新自拍| 在线视频日韩| www日韩大片| 日韩一级二级三级| 国产精品乱码妇女bbbb| 亚洲国产欧美一区二区三区丁香婷| 秋霞电影一区二区| 欧美一区免费| 处破女av一区二区|