Maison  >  Article  >  base de données  >  appel de procédure stockée Oracle Java

appel de procédure stockée Oracle Java

WBOY
WBOYoriginal
2023-05-07 22:19:361533parcourir

Avec l'approfondissement continu de l'informatisation des entreprises, l'utilisation de bases de données est de plus en plus répandue et l'application de procédures stockées devient de plus en plus courante. La base de données Oracle a fait un excellent travail dans la mise en œuvre et l'optimisation des procédures stockées, mais il est parfois nécessaire d'appeler des programmes Java dans des procédures stockées pour répondre à certains besoins spécifiques. Cet article analysera et expliquera les principes, méthodes et cas d'implémentation de procédures stockées appelant Java.

1. Principe de mise en œuvre d'une procédure stockée appelant Java

La procédure stockée est un objet de base de données précompilé. Elle peut être considérée comme un script écrit au niveau de la base de données et peut implémenter une logique métier complexe. Les procédures stockées peuvent appeler d'autres procédures ou fonctions stockées, mais elles ne peuvent pas appeler directement des programmes Java. Lorsque vous devez appeler un programme Java dans une procédure stockée, vous devez utiliser le mécanisme de langage étendu de la base de données pour y parvenir en créant une procédure stockée Java.

La procédure stockée Java est essentiellement un programme Java qui se connecte à la base de données Oracle via JDBC (Java Database Connectivity) pour interagir avec la base de données. La création d'une procédure stockée Java dans une base de données Oracle nécessite les étapes suivantes :

1. Créer une classe Java

Vous devez écrire une classe en Java pour accéder et faire fonctionner la base de données. Cette classe doit implémenter l'interface spécifique de la base de données Oracle, qui est "oracle.jdbc.OracleCallableStatement".

2. Compilez les classes Java dans des fichiers de bytecode Java

Compilez les classes Java écrites dans des fichiers de bytecode Java (fichiers .class). Vous pouvez utiliser le compilateur Javac ou d'autres IDE Java.

3. Stockez les fichiers de bytecode Java dans la base de données Oracle

Utilisez l'outil "loadjava" fourni avec le JDK pour télécharger les fichiers de bytecode Java dans la base de données Oracle, comme suit. :

loadjava -user username/password@database -verbose classfile

Où, classfile est le chemin complet du fichier de bytecode Java.

4. Créer des procédures stockées Java dans la base de données Oracle

Pour créer des procédures stockées Java dans la base de données Oracle, vous pouvez utiliser des outils tels que PL/SQL ou SQL Developer. La syntaxe de création d'une procédure stockée Java est la suivante :

CREATE OR REPLACE PROCEDURE nom_procédure
AS LANGUAGE JAVA
NOM 'Java_class_name.method_name()';

où nom_procédure est le nom de la procédure stockée Java_class_name est le nom de ; la classe Java ; nom_méthode est Java Le nom de la méthode dans la classe.

2. Comment appeler Java à partir d'une procédure stockée

1. Utilisez JDBC pour vous connecter

Dans une procédure stockée Java, vous pouvez utiliser JDBC pour vous connecter à la base de données Oracle afin d'interagir avec la base de données. En Java, vous pouvez utiliser le code suivant pour obtenir la connexion JDBC :

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

Parmi eux, "oracle.jdbc.driver.OracleDriver" est le pilote JDBC de la base de données oracle, qui doit être chargé dans le code ; "jdbc:oracle :thin:@ "localhost:1521:ORACLE" est l'URL de connexion à la base de données ; "username" et "password" sont le nom d'utilisateur et le mot de passe de la base de données.

2. Appeler des méthodes Java

Dans les procédures stockées Java, vous pouvez appeler directement des méthodes dans les classes Java. Vous pouvez utiliser le code suivant pour appeler la méthode dans la classe Java :

String result = Java_class_name.method_name();

où "Java_class_name" est le nom de la classe Java, "method_name" est le nom de la méthode dans Java classe, "result" est la valeur de retour de la méthode.

3. Transmettre les paramètres dans les procédures stockées

Dans les procédures stockées Java, les paramètres peuvent être transmis aux méthodes Java via les paramètres de la procédure stockée. Vous pouvez utiliser le code suivant pour obtenir les paramètres de la procédure stockée :

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

where , "cs" est l'objet de la procédure stockée, "procedure_name" est le nom de la procédure stockée, "param1" et "param2" sont les paramètres de la procédure stockée et "result" est la valeur de retour de la méthode.

3. Cas d'une procédure stockée appelant Java

Ce qui suit est un cas d'utilisation d'une procédure stockée Java pour implémenter une simple requête d'informations utilisateur.

1. Créez une classe Java

Créez une classe en Java pour implémenter la méthode d'interrogation des informations utilisateur en fonction de l'ID utilisateur. Le code est le suivant :

classe publique 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 Compilez les classes Java

Compilez les classes Java écrites dans des fichiers de bytecode Java.

3. Stockez les fichiers de bytecode Java dans la base de données Oracle

Utilisez l'outil "loadjava" pour télécharger les fichiers de bytecode Java dans la base de données Oracle.

4. Créer une procédure stockée Java

Créez une procédure stockée Java dans la base de données Oracle pour implémenter la fonction d'appel de méthodes Java pour interroger les informations utilisateur. Le code est le suivant :

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 .Appelez des procédures stockées Java

Utilisez des outils tels que PL/SQL ou SQL Developer pour appeler des procédures stockées Java afin d'implémenter la fonction d'interrogation des informations utilisateur. Le code est le suivant :

DECLARE

result VARCHAR2(10000);

BEGIN

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

END;

Le code ci-dessus affichera les informations utilisateur avec l'ID utilisateur "001".

Résumé

Les procédures stockées sont une fonction très importante dans la base de données, qui peut mettre en œuvre une logique métier complexe et améliorer l'efficacité de la base de données. Lorsque vous devez appeler un programme Java dans une procédure stockée, vous pouvez le faire en créant une procédure stockée Java. Cet article présente les principes d'implémentation, les méthodes et les cas de procédures stockées appelant Java, et espère être utile à tout le monde.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn