[SQLPLUS] - Problème de Triggers Java
Bonjour,
je suis un débutant en Oracle.
J'ai installé Oracle 10 sur ma machine (Linux Mandrake 10.1) en suivant un tuto du web.
Aucun problème, j'ai crée un utilisateur Oracle qui gère le SGBD
Je me connexte à ma base depuis un session Oracle comme celà :
- je lance la base de donnée (depuis sql plus : startup)
- toujours depuis ma session sous l'utilisateur Oracle je lance un terminal puis passe à l'utilisateur christophe (su chirstophe).
- sous 'christophe' sqlplus christophe/MOTDEPASSE
Tout marche OK (création, lecture, suppression de tables.)
Sauf quand je veux utiliser un trigger !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| -- Compile la classe TP.java
! javac triggers_relationnel.java
-- Charge la classe dans le schéma de base de données
! loadjava -u christophe/MOTDEPASSE ./triggers_relationnel.class -resolve
-- Crée la procédure SQL/Oracle associée à la méthode NiveauPlongeur
create or replace procedure VerifierNiveau (idPlongeurIns varchar2 ,idPlongeeIns varchar2)
as language java
name 'triggers_relationnel.VerifierNiveau(java.lang.String , java.lang.String)';
/
--Associe le trigger à un ajout/modification dans Inscription
create or replace trigger InsModTupleInscr
after insert or update of idPlongeurIns , idPlongeeIns on Inscriptions
for each row
call VerifierNiveau(:new.idPlongeurIns, :new.idPlongeeIns)
/ |
qui utilise un fichier java qui contient la méthode :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public static void VerifierNiveau(java.lang.String idPlongeur, java.lang.String idPlongee)
throws SQLException, ClassNotFoundException
{
// Chargement du pilote Oracle
Class.forName("oracle.jdbc.driver.OracleDriver");
// Connexion externe à une BD Oracle, identification
Connection conn = DriverManager.getConnection
("jdbc:default:connection:");
// Déclaration d'une requête SQL
Statement req = conn.createStatement ();
// Déclaration d'une requête SQL
Statement req2 = conn.createStatement ();
// Niveau requis pour la plongee
ResultSet niveauPlongee = req.executeQuery
("Select niveauRequis From Plongees Where idPlongee = '"+idPlongee +"'"); |
quand j'execute le code sql j'obtient l'erreur :
Citation:
errors : class triggers_relationnel
ORA-29521: impossible de trouver le nom référencé java/lang/StringBuilder
The following operations failed
class triggers_relationnel: resolution
exiting : Failures occurred during processing
Mais la procédure et le déclencheur sont quand même crées...
Quand j'insère des tuples dans la taple concernée par le trigger je recois un message d'erreurs.
Le fichier java compile parfaitement mais impossible de le charger !! je pense qu'il s'agit d'un problème de variable d'envirronement...
Je précise que le meme code marche parfaitement à la Fac, donc ça vient forcément de mon installation et pas du code...
Voilà si vous avez des idées
(j'espère avoir été clair)
Merci,
Christophe
Message édité par Orafrance, merci d'utiliser les outils du forum qui facilitent la lecture :twisted: