Notre objectif dans cette note est d'utiliser à partir d'une classe JAVA un package PL/SQL pour insérer des données dans une table ORACLE.
Pour accéder à la base de données ORACLE, nous utiliserons la classe ConnectionDB décrite dans la note :
http://java-programmation.blogspot.com/2008/11/jdeveloper-jdbc-thin-acces-base-de.html
Objets ORACLE utilisés dans cet exemple :
- Utilisateur (Schéma) : NFP121
- Table : SERVICE
- Package stocké : PKG_SERVICE
- Procédure stockée : INSERT_SERVICE
Ci-dessous le code PL/SQL du package utilisé :
create or replace PACKAGE "PKG_SERVICE" AS
PROCEDURE INSERT_SERVICE
(P_CODE IN VARCHAR2,
P_LIBELLE IN VARCHAR2);
PROCEDURE UPDATE_SERVICE
(P_CODE IN VARCHAR2,
P_LIBELLE IN VARCHAR2);
END;
/
create or replace PACKAGE BODY "PKG_SERVICE" AS
PROCEDURE INSERT_SERVICE
(P_CODE IN VARCHAR2,
P_LIBELLE IN VARCHAR2)
IS
BEGIN
INSERT INTO SERVICE
(CODE, LIBELLE)
VALUES
(P_CODE, P_LIBELLE);
END INSERT_SERVICE;
PROCEDURE UPDATE_SERVICE
(P_CODE IN VARCHAR2,
P_LIBELLE IN VARCHAR2)
IS
BEGIN
UPDATE SERVICE
SET LIBELLE = P_LIBELLE
WHERE CODE = P_CODE;
END UPDATE_SERVICE;
END;
/
Le code de la classe JAVA qui utilise la procédure stockée INSERT_SERVICE :
package gestionemployes;
import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.*;
public class TEST1 {
public TEST1() {
}
public static void main(String[] args) {
try{
ConnectionDB cnxDB = new ConnectionDB();
cnxDB.connect();
CallableStatement ServiceInsertCall;
ServiceInsertCall = cnxDB.conn.prepareCall("{ call PKG_SERVICE.INSERT_SERVICE(?, ?) }");
ServiceInsertCall.setString("P_CODE",args[0]);
ServiceInsertCall.setString("P_LIBELLE",args[1]);
ServiceInsertCall.execute();
System.out.println("Service insere");
}
catch(SQLException sqle){
System.out.println(sqle.toString());}
}
}
Aucun commentaire:
Enregistrer un commentaire