更新時間:2022-05-23 09:43:39 來源:動力節(jié)點 瀏覽1808次
你可以運行Java存儲過程的方式與 PL/SQL 存儲過程相同。通常,對 Java 存儲過程的調(diào)用是數(shù)據(jù)庫操作的結(jié)果,因為它通常是觸發(fā)器或 SQL DML 調(diào)用的結(jié)果。要調(diào)用 Java 存儲過程,您必須通過調(diào)用規(guī)范發(fā)布它。
在調(diào)用 Java 存儲過程之前,您必須將它們加載到 Oracle 數(shù)據(jù)庫實例中并將它們發(fā)布到 SQL。加載和發(fā)布是單獨的任務(wù)。許多僅由其他 Java 類引用的 Java 類從未發(fā)布過。
要自動加載 Java 存儲過程,您可以使用loadjava命令行實用程序。它將 Java 源文件、類和資源文件加載到系統(tǒng)生成的數(shù)據(jù)庫表中,然后使用 SQLCREATE JAVA {SOURCE | CLASS | RESOURCE}語句將 Java 文件加載到 Oracle 數(shù)據(jù)庫實例中。您可以從文件系統(tǒng)、流行的 Java IDE、Intranet 或 Internet 上傳 Java 文件。
創(chuàng)建、加載和調(diào)用 Java 存儲過程涉及以下步驟:
第 1 步:創(chuàng)建或重用 Java 類
第 2 步:加載和解析 Java 類
第 3 步:發(fā)布 Java 類
第 4 步:調(diào)用存儲過程
第 5 步:如有必要,調(diào)試存儲過程
第 1 步:創(chuàng)建或重用 Java 類
使用首選的 Java IDE 創(chuàng)建類,或重用滿足您要求的現(xiàn)有類。Oracle 數(shù)據(jù)庫支持許多 Java 開發(fā)工具和客戶端編程接口。例如,Oracle JVM 接受在流行的 Java IDE 中開發(fā)的程序,例如 Oracle JDeveloper、Symantec Visual Cafe 和 Borland JBuilder。
在以下示例中,您將創(chuàng)建public類Oscar。它有一個名為 的方法quote(),該方法返回 Oscar Wilde 的引用。
public class Oscar
{
// return a quotation from Oscar Wilde
public static String quote()
{
return "I can resist everything except temptation.";
}
}
將類保存為Oscar.java. 使用 Java 編譯器,.java在您的客戶端系統(tǒng)上編譯該文件,如下所示:
javac Oscar.java
編譯器輸出一個 Java 二進(jìn)制文件,在本例中為Oscar.class.
第2步:負(fù)載和 R解決 Java 類
使用該loadjava實用程序,您可以將 Java 源文件、類和資源文件加載到 Oracle 數(shù)據(jù)庫實例中,并在其中存儲為 Java 模式對象。您可以loadjava從命令行或應(yīng)用程序運行,并且可以指定多個選項,包括解析器。
在以下示例中,loadjava使用默認(rèn)的 JDBC OCI 驅(qū)動程序連接到數(shù)據(jù)庫。您必須指定用戶名和密碼。默認(rèn)情況下,Oscar該類被加載到您登錄的用戶的架構(gòu)中,在本例中為scott.
$ loadjava -user scott/tiger Oscar.class
當(dāng)您調(diào)用該quote()方法時,服務(wù)器會使用解析器來搜索支持類,例如String. 在這種情況下,將使用默認(rèn)解析器。默認(rèn)解析器首先搜索當(dāng)前模式,然后搜索SYS所有核心 Java 類庫所在的模式。如有必要,您可以指定不同的解析器。
第 3 步:發(fā)布 Java 類
對于可以從 SQL 調(diào)用的每個 Java 方法,您必須編寫一個調(diào)用規(guī)范,該規(guī)范將方法的頂級入口點暴露給 Oracle 數(shù)據(jù)庫。通常,只需要幾個調(diào)用規(guī)范。如果愿意,您可以使用 Oracle JDeveloper 生成這些調(diào)用規(guī)范。
在以下示例中,您從 SQL*Plus 連接到數(shù)據(jù)庫,然后為方法定義頂級調(diào)用規(guī)范quote():
SQL> 連接 scott/tiger
SQL> CREATE FUNCTION oscar_quote RETURN VARCHAR2
2 AS LANGUAGE JAVA
3 NAME 'Oscar.quote() return java.lang.String';
第 4 步:調(diào)用存儲過程
您可以從 SQL DML 語句、PL/SQL 塊和 PL/SQL 子程序調(diào)用 Java 存儲過程。使用 SQLCALL語句,您還可以從頂層調(diào)用存儲過程,例如從 SQL*Plus。存儲過程也可以從數(shù)據(jù)庫觸發(fā)器中調(diào)用。
在以下示例中,您聲明了一個 SQL*Plus 主變量:
SQL> VARIABLE 引用 VARCHAR2(50);
然后,調(diào)用該函數(shù)oscar_quote(),如下所示:
SQL> CALL oscar_quote() INTO :theQuote;
SQL> PRINT theQuote;
THEQUOTE
第 5 步:調(diào)試存儲過程,如果需要的話
調(diào)試存儲過程是強(qiáng)制性的。您的 Java 存儲過程在位于單獨計算機(jī)上的服務(wù)器上遠(yuǎn)程運行。但是,JDK 調(diào)試器jdb無法調(diào)試遠(yuǎn)程 Java 程序。因此,在將存儲過程加載到數(shù)據(jù)庫之前,您需要在客戶端計算機(jī)上對其進(jìn)行調(diào)試。
以上就是關(guān)于“Java存儲過程的步驟”介紹,大家如果想了解更多相關(guān)知識,不妨來關(guān)注一下動力節(jié)點的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細(xì)致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助哦。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743