Oracle データベースでは、ストアド プロシージャは、データベース操作の実行と管理に使用できる、コンパイル済みの PL/SQL コードの一部です。ただし、特定のビジネス要件に対処する場合、ストアド プロシージャ自体が要件を完全に満たしていない可能性があり、問題を解決するには Java コードを呼び出す必要があります。この記事では、Oracle ストアド プロシージャで Java を呼び出す方法を紹介します。
Oracle は、Java コードを Oracle データベースに埋め込むことができる JVM (Java Virtual Machine) と呼ばれる機能を提供します。 JVM 機能を有効にすると、Oracle は Java ソース コードを実行し、ストアド プロシージャの一部として扱うことができるようになります。
Oracle JVM 機能を有効にする場合は、Java Development Kit (JDK) と Java Virtual Machine (JVM) をインストールする必要があります。 Oracle 11g より前は、JDK と JVM を手動でインストールする必要がありましたが、Oracle 11g からは、JVM がデフォルトで Oracle データベースにインストールされるようになりました。さらに、Oracle が JDK と JVM の場所を正しく検出できるようにするために、いくつかの環境変数を設定する必要があります。
Oracle で Java ストアド プロシージャを作成するには、対応する Java ソース コードを作成する必要があります。サンプル コードでは、2 つのメソッドを含む単純な Java クラスを作成しました。1 つは 2 つの整数の合計を返し、もう 1 つは 2 つの整数の積を返します。
import oracle.jdbc.*; import java.sql.*; public class JavaProc { public static int add(int a, int b) { return a + b; } public static int multiply(int a, int b) { return a * b; } }
Java ソース コードを保存した後、Java コンパイラを使用してそれを .class ファイルにコンパイルする必要があります。コンパイルが完了したら、.class ファイルを Oracle サーバー上のディレクトリに保存します。
次に、Oracle データベースに Java ストアド プロシージャを作成する必要があります。以下に示すように、CREATE PROCEDURE ステートメントを使用してストアド プロシージャを作成します。これには、Java ソース コード ファイルの場所とクラス名が含まれます。
CREATE OR REPLACE PROCEDURE java_proc ( a IN NUMBER, b IN NUMBER, op IN VARCHAR2, result OUT NUMBER ) AS LANGUAGE JAVA NAME 'JavaProc.calculate(int, int, java.lang.String, oracle.jdbc.OracleTypes.NUMBER)' LIBRARY java_proc_jar /
このストアド プロシージャでは、a、b、op の 4 つのパラメータを定義します。は入力パラメータ、結果は出力パラメータです。 a と b は整数で、op は実行される操作を表す文字列です。 result は、計算結果を保存するために使用される出力パラメーターです。
ストアド プロシージャでは、前にコンパイルした Java クラス JavaProc.calculate の場所とクラス名を参照します。 Java クラス名とメソッド名を指定する場合、Java クラス名とメソッド名では大文字と小文字が区別されることに注意してください。さらに、Oracle 戻りパラメータのデータ型 oracle.jdbc.OracleTypes.NUMBER も指定します。
ストアド プロシージャを実行する前に、Java クラスを JAR ファイルにパッケージ化し、Oracle データベースにロードする必要もあります。この例では、Java クラスを java_proc_jar という名前の JAR ファイルにパッケージ化し、Oracle データベースにロードします。
Java ストアド プロシージャを呼び出すには、他のストアド プロシージャと同様に CALL ステートメントを使用するだけです。この例では、2 つの整数と操作文字列を渡し、結果を出力パラメーターに保存します。サンプル コードは次のとおりです。
DECLARE a NUMBER; b NUMBER; op VARCHAR2(1); result NUMBER; BEGIN a := 10; b := 20; op := '+'; java_proc(a, b, op, result); DBMS_OUTPUT.PUT_LINE('Result: ' || result); END;
ストアド プロシージャを呼び出した後、DBMS_OUTPUT.PUT_LINE ステートメントを使用して結果をコンソールに出力します。
Oracle JVM 機能を使用すると、Oracle データベースの機能を拡張するために、ストアド プロシージャ内で Java コードを呼び出すことができます。 Java と PL/SQL を組み合わせると、より高レベルの機能と強力な機能が提供されます。 Java ソース コードを記述して JAR ファイルにパッケージ化し、それを Oracle データベースにロードすることで、Java ストアド プロシージャを作成し、特定のビジネス ニーズを解決するために必要なときにそれらを呼び出すことができます。
以上がOracleストアドプロシージャはJavaを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。