首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

在 Oracle 資料庫中發布與呼叫 Java 程式:完整實作指南

     編輯:Java 相關知識

前言:Java 與 PL/SQL 的無縫整合

Oracle 資料庫自 8i 版本起便支援將 Java 類別儲存於資料庫內部,使其能作為 PL/SQL 的替代或補充方案。開發者可撰寫 Java 程式並將其部署為資料庫觸發器、預存程序、函數,甚至物件的成員方法。一旦完成部署,這些 Java 預存程序即可從 SQL 或 PL/SQL 中直接呼叫,使用方式與原生 PL/SQL 程序無異。

開發與部署流程概覽

將 Java 程式整合至 Oracle 資料庫主要分為三個階段:

  1. 撰寫 Java 程式碼:使用 JDeveloper、JBuilder 或任何慣用的 Java 開發環境編寫原始碼。
  2. 載入資料庫:透過 CREATE OR REPLACE JAVA SOURCE 命令或 LOADJAVA 工具將編譯後的類別載入 Oracle 8i/9i 以上版本。
  3. 發布至 SQL 層:建立 Call Spec(呼叫規格),將 Java 方法的進入點暴露給 SQL/PL/SQL,完成資料型別對應與參數傳遞模式的定義。

實戰範例:從 SQL*Plus 部署「Hello World」

步驟 1:建立 Java Source

可直接在 SQL*Plus 中建立原始碼;若已具備編譯好的 .class 檔,可略過此步驟直接進入發布階段。

SQL> CREATE OR REPLACE JAVA SOURCE NAMED "Hello" AS
public class Hello {
    static public String Message(String name) {
        return "Hello, " + name;
    }
}
/
Java created.

步驟 2:發布為 PL/SQL 函數

使用 AS LANGUAGE JAVA 子句將靜態方法 Hello.Message 映射為名為 hello 的 PL/SQL 函數。

SQL> CREATE OR REPLACE FUNCTION hello (name VARCHAR2) RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'Hello.Message(java.lang.String) return java.lang.String';
/
Function created.

步驟 3:在 SQL 中呼叫

發布完成後,即可像呼叫普通函數一樣使用它:

SQL> SELECT hello('world!') FROM dual;

HELLO('world!')
----------------
Hello world!

中文支援說明

Oracle 8i 版本對中文支援有限,自 9i 起可正確處理中文字元:

SQL> SELECT hello('你好!') FROM dual;

HELLO('你好!')
------------------
Hello, 你好!

關鍵要點回顧

  • Java 類別載入資料庫後,實際執行於資料庫 JVM 內部,效能優於外部呼叫。
  • Call Spec 需精確對應 Java 方法簽名,包含完整類別名、方法名、參數型別與回傳型別。
  • 資料型別對應規則:VARCHAR2 ↔ java.lang.String、NUMBER ↔ java.math.BigDecimal 等,詳見 Oracle 官方文件。
  • 除靜態方法外,亦可發布實例方法,但需注意物件生命週期與 Session 狀態管理。

掌握此機制,即可在資料庫層引入豐富的 Java 類別庫功能(如正則表達式、複雜運算、外部 API 整合),大幅擴展 PL/SQL 的表達能力。

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