Oracle 8 伺服器不僅是龐大資料的儲存倉庫,更提供了完善的資訊管理環境。透過其內建的 WebServer 選件,開發人員能輕鬆實現 Web 資料庫應用。本文將深入探討如何運用 Oracle PL/SQL 及其強大的內建套件(如 HTP、HTF、OWA_UTIL),結合中介軟體架構,快速建構動態網頁應用。
典型的 Web 資料庫應用架構如下:
Web 瀏覽器 ←→ Internet ←→ Web Server ←→ CGI/API ←→ Oracle DB Server
中介軟體負責管理 Web Server 與 DB Server 之間的通訊,並提供應用程式服務。它能直接呼叫外部程式或腳本存取資料庫,進而產生動態 HTML 頁面、執行使用者查詢,並將結果格式化為 HTML 回傳給瀏覽器。
PL/SQL 是 Oracle 從版本 6 起支援的程序性語言,也是所有 Oracle 工具的標準程式語言。它支援三大核心功能:
內建套件(如 HTP、HTF、OWA_UTIL)預先編譯並儲存於資料庫,可在 PL/SQL 區塊中直接呼叫,支援直接輸出 HTML、讀寫作業系統檔案、執行動態 SQL 等功能。
score_into_webpage此程序接收考生代碼,查詢資料庫並動態生成 HTML 表格回傳結果。
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 Score Information');
HTP.HEADCLOSE;
HTP.BODYOPEN(cattributes => 'bgcolor="#808000"');
HTP.TABLEOPEN(border => 1);
HTP.TABLECAPTION('Score Information', 'center');
HTP.TABLEROWOPEN;
HTP.TABLEHEADER('Student Code');
HTP.TABLEHEADER('Student Name');
HTP.TABLEHEADER('Student Score');
HTP.TABLEROWCLOSE;
FOR score_rec IN score_cursor LOOP
HTP.TABLEROWOPEN;
HTP.TABLEDATA(score_rec.code);
HTP.TABLEDATA(score_rec.name);
HTP.TABLEDATA(score_rec.score);
HTP.TABLEROWCLOSE;
END LOOP;
HTP.TABLECLOSE;
HTP.BODYCLOSE;
HTMLCLOSE;
END;
ScoreForm提供使用者輸入考生代碼的表單,採用 GET 方式提交至 score_into_webpage。
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.FORMOPEN('score_into_webpage', cmethod => 'GET');
HTP.TABLEOPEN('border');
HTP.TABLEROWOPEN;
HTP.TABLEDATA('Enter Student Code');
HTP.TABLEDATA(HTF.FORMTEXT('code_in', 5, 5));
HTP.TABLEROWCLOSE;
HTP.TABLEROWOPEN;
HTP.TABLEDATA(HTF.FORMSUBMIT);
HTP.TABLEDATA(HTF.FORMRESET);
HTP.TABLEROWCLOSE;
HTP.FORMCLOSE;
HTP.BODYCLOSE;
HTP.HTMLCLOSE;
END;
Oracle 提供了整合開發工具、應用伺服器與資料庫伺服器的綜合平台。善用標準 PL/SQL 與內建套件,配合 WebServer,即可高效開發動態 Web 應用,滿足企業級資料發布與查詢需求。