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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
quand j'execute le code sql j'obtient l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 +"'");
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:
Partager