Oracle基本的動(dòng)態(tài)Web開(kāi)發(fā)的實(shí)際操作
以下的文章主要是介紹Oracle基本的動(dòng)態(tài)Web的開(kāi)發(fā)以及其實(shí)際的應(yīng)用,你是否對(duì)Oracle基本的動(dòng)態(tài)Web的開(kāi)發(fā)以及其實(shí)際的應(yīng)用感到十分頭疼?如果是這樣子的話,以下的文章將會(huì)給你相應(yīng)的解決方案。
1、用Oracle WebServer構(gòu)建Web數(shù)據(jù)庫(kù)應(yīng)用 Oracle 8服務(wù)器是一個(gè)完善的信息管理環(huán)境。它是一個(gè)大量數(shù)據(jù)的儲(chǔ)藏所,并給用戶提供對(duì)這些數(shù)據(jù)的快速訪問(wèn)。它能夠支持C/S結(jié)構(gòu)進(jìn)行分布式處理和Web計(jì)算等。利用其服務(wù)器選件之一的WebServer,可以提供實(shí)現(xiàn)Web數(shù)據(jù)庫(kù)應(yīng)用的強(qiáng)大功能。
一般來(lái)說(shuō),實(shí)現(xiàn)Web數(shù)據(jù)庫(kù)應(yīng)用可以在WebServer端提供CGI/API等中間件來(lái)連接WebServer 和DB Server,也可以讓用戶通過(guò)Web瀏覽器把相關(guān)應(yīng)用下載到客戶端運(yùn)行,在客戶端直接訪問(wèn)數(shù)據(jù)庫(kù),如Java Applet,Active X,Plug-in等。本文主要介紹利用Oracle 8 提供的PL/SQL和其功能強(qiáng)大的內(nèi)置程序包來(lái)編寫程序以實(shí)現(xiàn)動(dòng)態(tài)的Web應(yīng)用。
屬于利用中間件開(kāi)發(fā)的一種。中間件負(fù)責(zé)管理WebServer和DBServer之間的通信并提供應(yīng)用程序服務(wù),它能夠直接調(diào)用外部程序或腳本代碼來(lái)訪問(wèn)數(shù)據(jù)庫(kù),因此可以提供與數(shù)據(jù)庫(kù)相關(guān)的動(dòng)態(tài)HTML頁(yè)面,或執(zhí)行用戶查詢,并將查詢結(jié)果格式化成HTML頁(yè)面再通過(guò)WebServer返回給用戶瀏覽器。其一般結(jié)構(gòu)如下所示:
Web瀏覽器 ←→ Internet ←→ Web Server ←→ CGI/API ←→ Oracle DB Server
2、PL/SQL
Oracle從其版本6開(kāi)始支持一種過(guò)程處理語(yǔ)言PL/SQL,并將其作為所有Oracle工具的標(biāo)準(zhǔn)編程語(yǔ)言,從而所有的過(guò)程組件在Oracle服務(wù)器產(chǎn)品中都能實(shí)現(xiàn)。用PL/SQL可以實(shí)現(xiàn)下述重要功能:
存儲(chǔ)過(guò)程,即存放在Oracle數(shù)據(jù)庫(kù)中的程序(或代碼段)并為你的機(jī)構(gòu)完成特定的重要工作;
數(shù)據(jù)庫(kù)觸發(fā)器,即存放在數(shù)據(jù)庫(kù)中的代碼,可由應(yīng)用所產(chǎn)生的事件觸發(fā);
程序包,即把多個(gè)過(guò)程組合在一起當(dāng)作單個(gè)程序單元的代碼存放在數(shù)據(jù)庫(kù)中。
其中內(nèi)置程序包是預(yù)先生成的,存儲(chǔ)在數(shù)據(jù)庫(kù)中,且能在PL/SQL代碼塊中調(diào)用的根據(jù)需求可以傳遞參數(shù)的程序。它可以完成把結(jié)果直接輸出到終端窗口;直接從操作系統(tǒng)文件讀寫數(shù)據(jù);執(zhí)行動(dòng)態(tài)的SQL等多項(xiàng)功能。常用的如HTP,HTF,OWA-UTIL等。下面將通過(guò)一個(gè)動(dòng)態(tài)的網(wǎng)上查詢分?jǐn)?shù)的實(shí)例來(lái)說(shuō)明其在動(dòng)態(tài)Web中的應(yīng)用。
3、利用WebServer和PL/SQL開(kāi)發(fā)動(dòng)態(tài)Web實(shí)例
現(xiàn)有一考生成績(jī)庫(kù)需在網(wǎng)上向用戶提供查詢成績(jī)的功能。首先可考慮利用HTP程序包根據(jù)用戶輸入的考生號(hào)到數(shù)據(jù)庫(kù)中查詢相應(yīng)的信息,返回一個(gè)網(wǎng)頁(yè)。代碼如下:
- Create or replace procedure score_into_webpage (code_in in number)
- As
- cursor score_cursor is
- select code,name,score
- from student
- where code = code_in;
- Begin
- Htp.htmlopen;
- Htp.headopen;
- Htp.title ('Student's score information');
- Htp.headclose;
- Htp.bodyopen (cattributes=>'bgcolor = "#80800"');
- Htp.tableopen(border');
- Htp.tablecaption ('Score Information','center');
- Htp.tablerowopen;
- Htp.tableheader (' Student Code');
- Htp.tableheader (' Student Name');
- Htp.tableheader (' Student Score');
固定地顯示頁(yè)標(biāo)題、標(biāo)題、表頭等信息,每次調(diào)用此頁(yè)時(shí)顯示的信息是相同的
- Htp.tablerowclose;
- For score_rec in score_cur
- Loop
利用游標(biāo)的For循環(huán)為游標(biāo)在網(wǎng)頁(yè)中產(chǎn)生一個(gè)數(shù)據(jù)行
- htp.tablerowopen;
- htp.tabledata (score_rec.code);
- htp.tabledata (score_rec.name);
- htp.tabledata (score_rec.score);
- htp.tablerowclose;
- Endloop;
- Htp.tableclose;
- Htp.bodyclose;
- Htp.htmlclose;
- End;
通過(guò)以上代碼,我們有了一個(gè)Oracle基本的用數(shù)據(jù)庫(kù)中的數(shù)據(jù)動(dòng)態(tài)的生成一個(gè)網(wǎng)頁(yè)的方法,下面將建立一個(gè)簡(jiǎn)單的表單。在表單中調(diào)用上述程序和接受用戶輸入的考生號(hào)碼,從而在客戶端向用戶動(dòng)態(tài)地顯示從數(shù)據(jù)庫(kù)中查詢的信息。
- Create or replace procedure ScoreForm
- As
- Begin
- Htp.headopen;
- Htp.title ('Code Entry Form');
- Htp.headclose;
- Htp.bodyopen;
- Htp.header (2,'Score Information Code Form');
- Htp.p ('
- ');
- Htp.formopen ('Score_into_webpage',cmethod=>'GET');
打開(kāi)ScoreForm表單。缺省情況下Score_into_webpage PL/SQL過(guò)程用GET方法調(diào)用。GET方法在URL里顯示傳遞的參數(shù)。
- Htp.tableopen ('border');
- Htp.tablerowopen;
- Htp.tabledata ('Enter Student Code');
- Htp.tabledata (htf.formtext ('code_in',5,5));
用一個(gè)文本框提示用戶輸入考號(hào)。文本框的名字必須與調(diào)用過(guò)程里的輸入?yún)?shù)相同
- Htp.tablerowclose;
- Htp.tablerowopen;
- Htp.tablerowclose;
- Htp.tablerowopen;
- Htp.tabledata (htf.formSubmit);
- Htp.tabledata (htf.formReset);
- Htp.tablerowclose;
- Htp.formclose;
- Htp.bodyclose;
- Htp.htmlclose;
- End;
上述過(guò)程在客戶端被調(diào)用后產(chǎn)生的HTML即可顯示一動(dòng)態(tài)表單接受用戶輸入的考號(hào),然后傳遞給調(diào)用的過(guò)程score_into_webpage,從而到Oracle DBServer中查詢出所需的數(shù)據(jù),再通過(guò)該過(guò)程動(dòng)態(tài)生成的HTML在Web瀏覽器中顯示出來(lái)。
4、 結(jié)束語(yǔ)
作為一個(gè)大型數(shù)據(jù)庫(kù)服務(wù)器,Oracle提供了一個(gè)面向網(wǎng)絡(luò)的開(kāi)發(fā)工具、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的綜合平臺(tái)。本文利用其標(biāo)準(zhǔn)PL/SQL和內(nèi)置程序包并結(jié)合WebServer討論了Oracle基本的動(dòng)態(tài)Web的開(kāi)發(fā)和應(yīng)用。
文章出自:http://database.csdn.net/page/5803d3fc-8b4d-4447-93af-ca833c5165e6
【編輯推薦】
- Oracle 10g數(shù)據(jù)庫(kù)的相關(guān)內(nèi)容描述
- Oracle數(shù)據(jù)庫(kù)的異構(gòu)服務(wù)原理描述
- Oracle細(xì)粒度的訪問(wèn)控制的基本工作方式
- 探討Oracle中rownum的用法
- Oracle屏蔽英文提示信息的2個(gè)好辦法