ホームページ  >  記事  >  データベース  >  Oracleストアドプロシージャ呼び出しJava

Oracleストアドプロシージャ呼び出しJava

WBOY
WBOYオリジナル
2023-05-07 22:19:361574ブラウズ

企業の情報化が継続的に進むにつれて、データベースの使用がますます普及し、ストアド プロシージャの適用がますます一般的になってきています。 Oracle データベースはストアド プロシージャの実装と最適化において優れた機能を果たしていますが、特定のニーズを満たすためにストアド プロシージャ内で Java プログラムを呼び出す必要がある場合があります。この記事では、Java を呼び出すストアド プロシージャの実装原理、方法、事例を分析して説明します。

1. Java を呼び出すストアド プロシージャの実装原理

ストアド プロシージャは、プリコンパイルされたデータベース オブジェクトであり、データベース レベルで記述されたスクリプトとみなすことができ、複雑なビジネス ロジックを実装できます。ストアド プロシージャは他のストアド プロシージャまたは関数を呼び出すことができますが、Java プログラムを直接呼び出すことはできません。ストアド プロシージャで Java プログラムを呼び出す必要がある場合は、データベースの拡張言語メカニズムを使用して、Java ストアド プロシージャを作成してこれを実現する必要があります。

Java ストアド プロシージャは、本質的には、JDBC (Java Database Connectivity) を通じて Oracle データベースに接続し、データベースと対話する Java プログラムです。 Oracle データベースに Java ストアド プロシージャを作成するには、次の手順が必要です:

1. Java クラスの作成

データベースにアクセスして操作するには、Java でクラスを作成する必要があります。このクラスは、Oracle データベースの特定のインタフェース「oracle.jdbc.OracleCallableStatement」を実装する必要があります。

2. Java クラスを Java バイトコード ファイルにコンパイルする

記述された Java クラスを Java バイトコード ファイル (.class ファイル) にコンパイルします。 Javac コンパイラまたは他の Java IDE を使用できます。

3. Java バイトコード ファイルを oracle データベースに保存する

JDK に付属の「loadjava」ツールを使用して、Java バイトコード ファイルを oracle データベースにアップロードします。コマンド ライン ウィンドウで次のように使用します。

loadjava -user username/password@database -verbose classfile

ここで、classfile は Java バイトコード ファイルのフル パスです。

4. Oracle データベースに Java ストアド プロシージャを作成する

Oracle データベースに Java ストアド プロシージャを作成するには、PL/SQL や SQL Developer などのツールを使用できます。 Java ストアド プロシージャを作成するための構文は次のとおりです。

CREATE OR REPLACE PROCEDURE プロシージャ名
AS LANGUAGE JAVA
NAME 'Java_class_name.method_name()';

その中で、 process_name はストアド プロシージャ名、Java_class_name は Java クラスの名前、method_name は Java クラスのメソッド名です。

2. ストアド プロシージャから Java を呼び出す方法

1. JDBC 接続の使用

Java ストアド プロシージャでは、JDBC を使用して Oracle データベースに接続し、対話することができます。データベース。 Java では、次のコードを使用して JDBC 接続を取得できます:

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle) :thin :@localhost:1521:ORACLE", "username", "password");

このうち、"oracle.jdbc.driver.OracleDriver" は Oracle データベースの JDBC ドライバーです。コード プログラムにロードされます。「jdbc:oracle:thin:@localhost:1521:ORACLE」はデータベース接続の URL、「username」と「password」はデータベースのユーザー名とパスワードです。

2. Java メソッドの呼び出し

Java ストアド プロシージャでは、Java クラスのメソッドを直接呼び出すことができます。次のコードを使用して、Java クラスのメソッドを呼び出すことができます。

String result = Java_class_name.method_name();

ここで、「Java_class_name」は Java クラスの名前、「method_name」です。は Java クラスです。 内のメソッド名、「result」はメソッドの戻り値です。

3. ストアド プロシージャでのパラメータの受け渡し

Java ストアド プロシージャでは、ストアド プロシージャのパラメータを介してパラメータを Java メソッドに渡すことができます。次のコードを使用して、ストアド プロシージャのパラメータを取得できます。

CallableStatement cs = null;
cs = (OracleCallableStatement)conn.prepareCall("{callprocedure_name(?, ?, ?)} ");
cs.registerOutParameter(1, OracleTypes.VARCHAR);
cs.setString(2, param1);
cs.setString(3, param2);
cs.executeUpdate();
String result = cs.getString(1);

このうち、「cs」はストアド プロシージャ オブジェクト、「procedure_name」はストアド プロシージャの名前、「param1」と「param2」は"result" はストアド プロシージャのパラメータであり、"result" はメソッドの戻り値です。

3. Java ストアド プロシージャを呼び出すケース

次に、Java ストアド プロシージャを使用して、ユーザー情報の単純なクエリを実装するケースを示します。

1. Java クラスの作成

Java でクラスを作成し、ユーザー ID に基づいてユーザー情報をクエリするメソッドを実装します。コードは次のとおりです:

public class UserInfo {

public static String getUserInfo(String userid) {
    String result = "";
    Connection conn = null;
    PreparedStatement ps = null;
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORACLE", "username", "password");
        String sql = "SELECT * FROM userinfo WHERE userid = ?";
        ps = conn.prepareStatement(sql.toString());
        ps.setString(1, userid);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            result += rs.getString("userid") + "\t";
            result += rs.getString("username") + "\t";
            result += rs.getString("age") + "\t";
            result += rs.getString("sex") + "\n";
        }
        rs.close();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            ps.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return result;
}

}

2. Java クラスのコンパイル

記述された Java クラスを Java バイトコード ドキュメントにコンパイルします。 。

3. Java バイトコード ファイルを Oracle データベースに保存する

「loadjava」ツールを使用して、Java バイトコード ファイルを oracle データベースにアップロードします。

4. Java ストアド プロシージャの作成

Oracle データベースに Java ストアド プロシージャを作成し、Java メソッドを呼び出してユーザー情報をクエリする機能を実装します。コードは次のとおりです。

CREATE OR REPLACE PROCEDURE getUserInfo(userid IN VARCHAR2, result OUT VARCHAR2)
AS LANGUAGE JAVA
NAME 'UserInfo.getUserInfo(java.lang.String) return java. lang.String ';

5. Java ストアド プロシージャの呼び出し

PL/SQL や SQL Developer などのツールを使用して Java ストアド プロシージャを呼び出し、ユーザー情報のクエリ機能を実装します。コードは次のとおりです:

DECLARE

result VARCHAR2(10000);

BEGIN

getUserInfo('001', result);
dbms_output.put_line(result);

END;

上記のコードは、ユーザーID「001」のユーザー情報を出力します。

概要

ストアド プロシージャはデータベース内の非常に重要な機能であり、複雑なビジネス ロジックを実装してデータベースの効率を向上させることができます。ストアド プロシージャで Java プログラムを呼び出す必要がある場合は、Java ストアド プロシージャを作成することで実行できます。この記事では、Java を呼び出すストアド プロシージャの実装原理、方法、事例を紹介し、皆様のお役に立てれば幸いです。

以上がOracleストアドプロシージャ呼び出しJavaの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。