Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2007, 16h58   #1
Membre régulier
 
Homme dieudonné madishon ngaya
Administrateur de base de données
Inscription : août 2003
Messages : 148
Détails du profil
Informations personnelles :
Nom : Homme dieudonné madishon ngaya
Âge : 48
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : août 2003
Messages : 148
Points : 89
Points : 89
Par défaut [9.2.0.5] ORA-04088: error during execution of trigger DIEU_ASIA

Bonjour,

Nous avons un problème avec un trigger.
Nous avons une table qui contient un champ CLOB. Lors de l'insertion dans cette table nous utilisons la méthode empty_clob() pour remplir ce champ (ce champ est donc renseigné après le INSERT via un dbms_lob.Write(...) ). Or nous voudrions créer un trigger qui se place sur les insertions de cette table, et qui modifie un champ de la table au moment de l'insertion en fonction du contenu de ce champ de type CLOB. Le problème est que ce trigger lève une exception Oracle du type :

Citation:
[06/12/2007 11:16:04.615 - 5 ms] {7} <E2BSenderOracle/E2BSenderOracle.cpp:167> Probleme lors de la connection Oracle : Error Code : 22275, Error Message : ORA-22275: invalid LOB locator specified
ORA-04088: error during execution of trigger DIEU_ASIA
ORA-06512: at "TS2EDA", line 6
ORA-06512: at line 1
PS : ce message contient des erreurs liées au code, l'erreur oracle qui nous intéresse est à la 3eme ligne

En effet, lorsque le trigger essaie d'accéder au champ de type CLOB (le champ se nomme 'xml') le champ n'est pas encore renseigné d'où l'erreur.

Avez-vous une idée de comment faire un trigger dans ce cas, ou y-a-t-il une autre solution que nous ne connaissons pas pour modifier un champ d'une table en fonction du contenu d'un autre champ de type CLOB.

Voici ci-dessous la structure du trigger DIEU_ASIA:
Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE OR REPLACE TRIGGER DIEU_ASIA
BEFORE INSERT ON DIEU
FOR EACH ROW
when 
(NEW.SYSTEM = 'GL' OR NEW.SYSTEM = 'ORC')
BEGIN
       IF(:NEW.XML LIKE '%<Broker>CDCMTK</Broker>%') THEN
            :NEW.SYSTEM := :NEW.SYSTEM || 'Asie';
       END IF;
END;
/

la structure de la table DIEU est:

Citation:
ID VARCHAR2(24) NOT NULL,
SYSTEM VARCHAR2(20) NOT NULL,
XML CLOB NULL,
ISSTREAMED CHAR(1) DEFAULT 0 NULL,
ISDONE CHAR(1) DEFAULT 0 NULL,
DATEINSERT DATE NULL

le package TS2EDA est:

Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE OR REPLACE PACKAGE RISKV52D.TS2EDA AS
	FUNCTION insertExec( n VARCHAR2, sys VARCHAR2) RETURN CLOB;
	procedure xml2xpath;
	procedure execStream( id IN VARCHAR2, xml IN CLOB, sys IN VARCHAR2) AS LANGUAGE java
	name 'ts2eda.streaming.ExecStreamer.streamXML(java.lang.String, oracle.sql.CLOB, java.lang.String)';
	procedure logError(id IN VARCHAR2, sys IN VARCHAR2, msg IN VARCHAR2);
	procedure flagExec(eid IN VARCHAR2, sys VARCHAR2);
	procedure flagExecWithValue(eid IN VARCHAR2, sys VARCHAR2, flag NUMBER);
	procedure insertExecInfos (eid IN VARCHAR2, sys VARCHAR2);
END TS2EDA;
/
dngaya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 17h17   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
http://www.developpez.net/forums/sho...highlight=clob

pour info : http://www.developpez.net/forums/d28716/bases-donnees/oracle/regles-infos-lire-poster/
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h07.


 
 
 
 
Partenaires

Hébergement Web