通過RPG來使用IBM DB2 for i 7.1提供的SQL/XML函數(shù)

本文展示了通過 RPG 來使用 IBM DB2 for i 7.1 提供的 SQL/XML 函數(shù)的幾個(gè)示例。文中展示了如何將 SQL 語句嵌入 RPG 程序,從而執(zhí)行涉及 XML 數(shù)據(jù)的關(guān)系查詢并生成 XML 結(jié)果。本文中演示了 SQL/XML 發(fā)布函數(shù)和近期發(fā)布的 XMLTABLE 函數(shù)。

對(duì)于任何企業(yè)來說,應(yīng)用程序的現(xiàn)代化和 web 支持都是極為重要的目標(biāo),但這同時(shí)也帶來了一些挑戰(zhàn)。通常,這些企業(yè)希望把 it 資源的重心放在改進(jìn)過去使用成功的基礎(chǔ)架構(gòu),而不是編寫全新的應(yīng)用程序。在 ibm i 平臺(tái)上,現(xiàn)代化通常意味著把rpg編寫的應(yīng)用程序改成基于web的應(yīng)用。由于目前存在大量通過 web 傳輸數(shù)據(jù)的 xml 標(biāo)準(zhǔn),因此在 rpg 中提供 xml 功能至關(guān)重要。rpg 程序員必須認(rèn)識(shí)到,db2 for i 引入的原生 xml 數(shù)據(jù)類型,為支持嵌入式 sql(包括 rpg)各種編程語言提供了一整套全新的選擇來同時(shí)處理 xml 和傳統(tǒng)數(shù)據(jù)。

在關(guān)系查詢中使用來自 XML 文檔的數(shù)據(jù)

假設(shè)我有一個(gè)應(yīng)用程序,用它在關(guān)系數(shù)據(jù)庫(kù)表中跟蹤客戶訂單。為了完成這項(xiàng)任務(wù),我需要使用 SQL 在模式 (RPG_ORDERS) 中創(chuàng)建以下 ORDERS 表,并在其中插入一些記錄:

清單 1. SQL 創(chuàng)建和插入語句

 				  CREATE TABLE rpg_orders.orders(  	order_id BIGINT GENERATED ALWAYS AS IDENTITY(  	                START WITH 1000 INCREMENT BY 1  	                NO MINVALUE NO MAXVALUE  	                NO CYCLE NO ORDER 	CACHE 20 ), 	Cust_email VARCHAR(50),  	Order_ts   TIMESTAMP ,  	Product    VARCHAR(50) CCSID 37,  	Price      DOUBLE PRECISION ,  	PRIMARY KEY(order_id) )    	;   INSERT INTO rpg_orders.orders  (cust_email, order_ts, product, price) VALUES  ('ntl@us..com',  '2012-04-15 13:00:00',  'Camera',   999.50 ),  ('ntl@us..com',  '2012-04-16 12:00:00',  'lens',  500.25),  ('ntl@us.ibm.com',  '2012-04-01 11:00:00',  'Book',   15.00),  ('george@nowhere.com',  '2012-04-15 13:05:00',  'Book',  20) ;    

對(duì)于請(qǐng)求為擁有匹配的電子郵件地址并在指定時(shí)間段內(nèi)完成的訂單生成一個(gè)報(bào)告的程序,這個(gè)基于 Web 的應(yīng)用程序?qū)⑻峁┮粋€(gè) XML 文檔。

清單 2 給出了一個(gè)示例請(qǐng)求文檔。

清單 2. 信息請(qǐng)求文檔示例

 				 <?xml version="1.0" encoding="UTF-8" ?> <OrderInfoRequest>   <CustEmail>ntl@us.ibm.com</CustEmail>   <MinTs> 2012-04-14T:00:00:00 </MinTs>   <MaxTs> 2012-04-30T23:59:59 </MaxTs> </OrderInfoRequest>   

我的第一個(gè) RPG 程序從文件中檢索一個(gè) XML 信息請(qǐng)求,并用它在假脫機(jī)文件中生成了一個(gè)報(bào)告。可以假設(shè)我們正在從標(biāo)準(zhǔn)輸出或套接字中讀取此數(shù)據(jù) —— 但為保持示例的簡(jiǎn)潔,流文件便足以闡述相關(guān)概念。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享