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 18/07/2008, 03h53   #1
Invité de passage
 
Inscription : juin 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3
Points : 0
Points : 0
Par défaut Procedure stockée / bloquante

bonjour , j'ai une procedure que je dois parametrer trois variabes , c'est date de debut (ddbut) , date fin (dfin ) et le matricule (lemat).
voila ma procedure :

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
CREATE OR REPLACE procedure anass
(lemat IN NUMBER, ddebut IN DATE, dfin IN DATE) 
AS
 BEGIN
  SELECT  POINTAGE.POINTAGE_DATE , POINTAGE.POINTAGE_CLOCKIN , POINTAGE.POINTAGE_CLOCKOUT , EMPLOYEE.EMPLOYEE_NAME , EMPLOYEE.EMPLOYEE_ID
  FROM    POINTAGE,EMPLOYEE
  WHERE  EMPLOYEE.EMPLOYEE_ID=POINTAGE.EMPLOYEE_ID
  AND      EMPLOYEE.EMPLOYEE_ID= lemat  
  AND      POINTAGE.POINTAGE_DATE BETWEEN ddebut AND dfin;
 END;
/
Avertissement : Procédure créée avec erreurs de compilation.
SQL> SHOW error
Erreurs pour PROCEDURE ANASS :
 
LINE/COL ERROR
-------- -----------------------------------------------------------------
6/3      PLS-00103: Symbole "SELECT" rencontré à la place d'un des
         symboles suivants :
         mod <an identifier> <a double-quoted delimited-identifier>
         <a bind variable> current sql execute forall merge
         <a single-quoted SQL string> pipe
 
11/2     PLS-00103: Symbole "END" rencontré
sincerement je me trouve bloqué , je voudrais bien que vous m'aidez , help me c'est urgent !!
moutaki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 08h23   #2
Membre confirmé
 
Inscription : août 2005
Messages : 270
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 270
Points : 294
Points : 294
Remarque 1 : Tu écrit une procédure avec des paramètre en entrée, pas de paramètre en sortie et à l'intérieur il y a un select. Ta procédure, au mieux, ne fait rien que consommer du CPU.
Elle fait son select et rend la main sans tien envoyer au programme qui l'a appelé.

Remarque 2 : Quand un Select est lancé dans la base, c'est pour aller chercher de l'information. En informatique, pour manipuler de l'information dans un programme L3G (type PL), on met l'information dans des variables. Ou met tu l'info ramenée par ton select ? Nulle part. Il manque une clause into. Donc des déclaration de variables.

Remarque 3 : Si ta requette ramene plusieurs lignes, il faut gérer tout cela sous forme d'un curseur ou d'un bulk collect.

Remarque 4 : une fois que ta requette raménera des lignes, il faudra savoir ce que tu souhaite en faire !

Et pour finir, en lisant ton code je m'attendais à un message de type "il manque une clause into", il y a peut être un autre truc que je n'ai pas vu.
jmguiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 09h29   #3
Membre éprouvé
 
Avatar de miloux32
 
Inscription : juillet 2003
Messages : 538
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 538
Points : 473
Points : 473
Pas la peine de faire les messages en double :
http://www.developpez.net/forums/sho...d.php?t=588381
__________________
C'est pas parce que ca marche que c'est bon!!
Pensez au bouton "Résolu"
Je ne réponds pas en privé aux questions
miloux32 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 21h38.


 
 
 
 
Partenaires

Hébergement Web