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