首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

利用 Oracle WebServer 與 PL/SQL 實現動態 Web 資料庫應用

     編輯:Oracle 資料庫基礎

背景:從靜態到動態 Web

傳統 Web Server 僅服務靜態 HTML 檔案,內容更新需人工替換檔案。隨著業務需求即時性、互動性增強,必須將資料庫技術與 Web 整合,實現動態內容生成。Oracle 8/8i 提供的 Oracle WebServer (OWS) 結合 PL/SQL Cartridge,提供無需 Java/CGI 即可構建動態 Web 應用的原生方案。

架構模式

Web Browser ←→ Internet ←→ Web Server (OWS) ←→ PL/SQL Cartridge ←→ Oracle DB Server
  • 中介軟體 (OWS + PL/SQL Cartridge) 管理 Web/DB 通訊,提供應用服務。
  • 直接調用資料庫內 PL/SQL 程序,查詢結果格式化為 HTML 回傳。
  • 屬於「中介軟體開發模式」:邏輯集中於資料庫層,客戶端零部署。

PL/SQL 核心能力

  • Stored Procedures:儲存於資料庫,執行核心業務邏輯。
  • Database Triggers:事件驅動 (DML/DDL/系統事件) 自動執行。
  • Packages:將相關 Procedure/Function/Variable/Cursor 封裝為單一單元,支援過載、封裝狀態。

內建套件支援 Web 開發

套件用途
HTP / HTFHypertext Procedures/Functions:程式化產生 HTML 標籤 (`HTP.PRINT`, `HTF.ANCHOR` 等)。
OWA_UTILWeb Agent Utility:取得 CGI 環境變數、重導向、日期格式化、簽章驗證。
OWA_COOKIECookie 讀寫管理。
OWA_PATTERN正規表達式字串處理。

簡易範例:動態查詢員工薪資

CREATE OR REPLACE PROCEDURE show_emp_sal (p_empno IN NUMBER) AS
  v_ename VARCHAR2(20);
  v_sal   NUMBER;
BEGIN
  SELECT ename, sal INTO v_ename, v_sal FROM emp WHERE empno = p_empno;
  
  -- 產生 HTTP 標頭與 HTML
  OWA_UTIL.MIME_HEADER('text/html');
  HTP.HTMLOPEN;
  HTP.HEADOPEN;
  HTP.TITLE('員工薪資查詢');
  HTP.HEADCLOSE;
  HTP.BODYOPEN;
  HTP.HEADER(2, '查詢結果');
  HTP.TABLEOPEN(BORDER => 1);
  HTP.TABLEROWOPEN;
  HTP.TABLEHEADER('員工編號'); HTP.TABLEHEADER('姓名'); HTP.TABLEHEADER('薪資');
  HTP.TABLEROWCLOSE;
  HTP.TABLEROWOPEN;
  HTP.TABLEDATA(p_empno); HTP.TABLEDATA(v_ename); HTP.TABLEDATA(TO_CHAR(v_sal,'L999,999'));
  HTP.TABLEROWCLOSE;
  HTP.TABLECLOSE;
  HTP.BODYCLOSE;
  HTP.HTMLCLOSE;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    HTP.PRINT('查無此員工編號: ' || p_empno);
END;
/

透過 URL 呼叫:`https://host:port/pls/dad/show_emp_sal?p_empno=7369` (需配置 DAD - Database Access Descriptor)。

優缺點與演進

優點缺點/限制
開發部署簡單,PL/SQL 開發者即可上手業務邏輯與表現層耦合,難以維護複雜 UI
零客戶端部署,資料庫原生效能佔用資料庫 Session/Process,高併發擴展受限
安全性集中於資料庫層HTML 生成程式碼冗長,缺乏現代框架支援 (MVC、AJAX、模板引擎)

演進:Oracle 9iAS / 10gAS 引入 J2EE 容器 (OC4J/WebLogic),推薦採用 Java/JSP/Servlet 或 APEX (Application Express) 取代傳統 PL/SQL Web 開發。APEX 以 Declarative 低代碼方式延續 PL/SQL 優勢,並提供現代化 UI 元件、REST API、響應式設計。

結語

Oracle WebServer + PL/SQL 是早期「資料庫即應用伺服器」架構的經典實踐。雖已非主流新建專案選擇,但理解其原理有助於維護舊系統、掌握 APEX 內部運作、以及在資料庫層實現輕量級 HTTP 服務 (如 REST Data Services / ORDS)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved