Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 30/01/2008, 00h06   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 1
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 1
Points : 0
Points : 0
Par défaut Peut-on dans la clause when faire appel à une procédure stockée ?

Peut-on dans la clause when d'un trigger faire appel à une sous-requête sql ou à une procédure stockée ?

J'explique ci-après quel est mon objectif:
Restreindre le déclenchement du trigger en fonction d'informations non basées sur la table (objet du trigger) mais fortement corrélées à certains champs de ma table ... d'où mon recours à une fonction stockée.
En effet, je ne veux pas coder cette restriction à l'intérieur du corps du trigger afin d'éviter son exécution systématique et ainsi de filtrer en amont (dans la clause when) pour autoriser où non l'exécution du trigger.

Merci de m'aider à valider la faisabilité ou l'infaisabilité de la chose ... et à défaut de me proposer une solution alternative.

Ci-dessous le début de la déclaration du trigger pour lequel j'ai tenté le recours à une fonction stockée.
La compilation du trigger m'a renvoyé l'erreur ORA-04076:invalid NEW or OLD specification.

Code :
1
2
3
4
5
6
7
8
CREATE OR REPLACE TRIGGER XXWM_MADEIN_COO_HIST_AIR_TRG 
AFTER INSERT ON RCV_TRANSACTIONS 
REFERENCING NEW AS NEW OLD AS OLD 
FOR EACH ROW 
WHEN ( NEW.TRANSACTION_TYPE = 'DELIVER' 
AND XXWM_WMS_COMMON.Is_wms_organization( NEW.ORGANIZATION_ID ) = 'Y' 
AND XXWM_WMS_COMMON.Is_rcv_item_is_wms( NEW.ORGANIZATION_ID , NEW.SHIPMENT_LINE_ID ) = 'Y' 
)
Merci pour votre aide
fidele73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 09h06   #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
non, tu dois faire un IF dans ton trigger
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 15h38   #3
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
Il est également interdit d'utiliser du SQL dans cette clause
__________________
Consultant et formateur Oracle
Michel SALAIS 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 13h07.


 
 
 
 
Partenaires

Hébergement Web