Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 21/06/2007, 14h38   #1
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 81
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2005
Messages : 81
Points : 25
Points : 25
Envoyer un message via MSN à Neji44
Par défaut Problème requete avec into dans trigger

Je réalise un trigger voici le code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
CREATE OR REPLACE TRIGGER gestion_emp
AFTER INSERT
ON PERIODE_SEJOUR
FOR each row
 
DECLARE
 
nb_pers number(2);
num_s number;
date_f date;
date_d date;
 
 
cursor c_last_sejour IS 
SELECT max(periode_sejour.Num_SEJOUR)AS Sejour, max(Nb_PERSONNE) AS Nombre
FROM sejour, periode_sejour 
WHERE sejour.num_sejour=periode_sejour.num_sejour;
 
BEGIN
 
FOR ligne IN c_last_sejour loop
     num_s := ligne.Sejour;
    nb_pers := ligne.Nombre;     
 
    SELECT date_fin INTO date_f FROM sejour WHERE num_sejour=num_s;
    SELECT date_debut INTO date_d FROM sejour WHERE num_sejour=num_s;
 
SELECT * FROM emplacement 
  WHERE Num_emplacement IN (SELECT sejour.num_emplacement 
                            FROM sejour,emplacement 
                            WHERE sejour.num_emplacement = emplacement.num_emplacement 
                            AND date_debut>= to_date(date_d,'DD-MM-YYYY') 
                            AND date_fin<= to_date(date_f,'DD-MM-YYYY') 
                            AND Nb_maxi_pers>=nb_pers) 
                            OR (Num_emplacement NOT IN(SELECT num_emplacement 
                                                       FROM sejour) 
                               AND Nb_maxi_pers>=nb_pers);
END LOOP;
END;
Il me met cette erreur pour mon dernier select. Il me demande d'utiliser un into je ne vois pas pourquoi

24/1 PLS-00428: une clause INTO est attendue dans cette instruction
SELECT


Merci pour vos réponses.
Neji44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h05   #2
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Code :
1
2
3
4
5
6
7
8
9
10
SELECT * FROM emplacement 
  WHERE Num_emplacement IN (SELECT sejour.num_emplacement 
                            FROM sejour,emplacement 
                            WHERE sejour.num_emplacement = emplacement.num_emplacement 
                            AND date_debut>= to_date(date_d,'DD-MM-YYYY') 
                            AND date_fin<= to_date(date_f,'DD-MM-YYYY') 
                            AND Nb_maxi_pers>=nb_pers) 
                            OR (Num_emplacement NOT IN(SELECT num_emplacement 
                                                       FROM sejour) 
                               AND Nb_maxi_pers>=nb_pers);
Efectivement vous faites un "select *" ==> into what ?

Quel est le but de ce trigger ?
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h16   #3
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Un select renvoie des valeurs !
Ou peut il les renvoyer dans un trigger ?
Surement pas a l'ecran !
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h53   #4
Membre éclairé
 
Inscription : décembre 2005
Messages : 315
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2005
Messages : 315
Points : 313
Points : 313
A quoi sert cette dernière requête ?
jproto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 16h06   #5
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut ,

De plus
Code :
1
2
3
4
5
6
7
8
9
10
11
 
cursor c_last_sejour IS 
SELECT max(periode_sejour.Num_SEJOUR)AS Sejour, max(Nb_PERSONNE) AS Nombre
FROM sejour, periode_sejour 
WHERE sejour.num_sejour=periode_sejour.num_sejour;
 
ON peut le remplacer par 
cursor c_last_sejour IS 
SELECT max(sejour.Num_SEJOUR)AS Sejour, max(Nb_PERSONNE) AS Nombre
FROM sejour
WHERE sejour.num_sejour=:new.num_sejour;
salim11 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 03h14.


 
 
 
 
Partenaires

Hébergement Web