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 10/06/2008, 14h34   #1
Membre régulier
 
Avatar de guigouz
 
Guillaume Zurbach
Étudiant
Inscription : mars 2008
Messages : 84
Détails du profil
Informations personnelles :
Nom : Guillaume Zurbach
Âge : 22
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 84
Points : 87
Points : 87
Par défaut Retour de valeur d'une fonction

Bonsoir,

Je réalise actuellement une petite appli en C# dans laquelle on me demande de faire plein de PL/SQL pour mettre en avant les vertus d'oracle. Je cherche ici à récupérer la valeur retournée par une fonction dans une variable d'un trigger :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE OR REPLACE TRIGGER TEST_PLACE AFTER INSERT ON PARTICIPER FOR EACH ROW
DECLARE
	plusDePlace EXCEPTION;
	nbPlacesDispo NUMBER;
BEGIN
	nbPlacesDispo := NB_PLACES_DISPO(NEW.NUMCOURS);
	IF nbPlacesDispo == 0 
             THEN RAISE plusDePlace;
	END IF;
EXCEPTION
	WHEN plusDePlace THEN RAISE_APPLICATION_ERROR(-20100, 'Ce cours ne peut plus accueillir de participants.');
END;
/
Je sais que la fonction NB_PLACES_DISPO fonctionne (je l'ai testée dans SQL+) mais je suis trés désorienté par le débeugeur de SQL+ et pas du tout habitué au PL/SQL. Je suis désolé d'avoir à poster pour une petite erreur comme ça mais je vais me rendre fou !
Oracle me répond à al compilation :
Code :
1
2
3
ERROR at line 6: PLS-00103: Symbole "=" rencontré à la place dun des symboles suivants : 
( - + ALL case mod new NULL any avg count current max min prior some sql stddev 
sum variance execute forall merge time timestamp interval date
Voilà si quelqu'un avait une petite idée du pourquoi du comment, je lui en serai très reconnaissant !
Merci d'avance à tous. Cordialement,

Guigouz
guigouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 14h52   #2
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
L'opérateur == n'existe pas en PL/SQL. Pour une comparaison, un seul "=" suffit
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 14h59   #3
Membre confirmé
 
Avatar de LBO72
 
Inscription : mai 2007
Messages : 385
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 385
Points : 282
Points : 282
Oups...

Essaye avec ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE OR REPLACE TRIGGER TEST_PLACE AFTER INSERT ON PARTICIPER FOR EACH ROW
DECLARE
	plusDePlace EXCEPTION;
	nbPlacesDispo NUMBER;
BEGIN
	nbPlacesDispo := NB_PLACES_DISPO(NEW.NUMCOURS);
	IF nbPlacesDispo = 0 
             THEN RAISE plusDePlace;
	END IF;
EXCEPTION
	WHEN plusDePlace THEN RAISE_APPLICATION_ERROR(-20100, 'Ce cours ne peut plus accueillir de participants.');
END;
/
LBO72.
LBO72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 15h01   #4
Membre confirmé
 
Avatar de LBO72
 
Inscription : mai 2007
Messages : 385
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 385
Points : 282
Points : 282
Désolé,

PlainR était plus rapide que moi et je n'avais pas vu sa réponse :-)

LBO72.
LBO72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 15h17   #5
Membre régulier
 
Avatar de guigouz
 
Guillaume Zurbach
Étudiant
Inscription : mars 2008
Messages : 84
Détails du profil
Informations personnelles :
Nom : Guillaume Zurbach
Âge : 22
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 84
Points : 87
Points : 87
Merci beaucoup ça marche !
Bonne journée !

Guigouz
guigouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 15h21   #6
Membre confirmé
 
Avatar de LBO72
 
Inscription : mai 2007
Messages : 385
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 385
Points : 282
Points : 282
Merci de penser à clore la discustion ==> la passer à l'état "Résolu"
LBO72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h40.


 
 
 
 
Partenaires

Hébergement Web