Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 01/03/2007, 09h53   #1
Invité régulier
 
Inscription : juin 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 24
Points : 6
Points : 6
Je suis debutant en db2, j'essaie d'ecrire une procedure stockée sous l'éditeur du control center :
Code :
1
2
3
4
5
6
7
8
9
 
CREATE procedure test(IN id int)
dynamic result sets 1
LANGUAGE sql
begin
declare rs AS cursor WITH RETURN FOR
SELECT * FROM act WHERE actno=id;
open rs;
end
erreur :

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
41
42
43
44
45
 
DB21034E La commande a été traitée comme une instruction SQL car il ne s'agit 
pas d'une commande valide pour l'interpréteur de commandes.  Le message SQL 
suivant a été renvoyé lors de son traitement :
SQL0104N Une marque inattendue "END-OF-STATEMENT" figure à la suite de "m act 
where actno=id".  Parmi  les marques attendues, on  trouve : 
"<psm_semicolon>".  LINE NUMBER=6.  SQLSTATE=42601
 
open rs
DB21028E Le curseur "RS" n'a pas été déclaré.
 
end
DB21034E La commande a été traitée comme une instruction SQL car il ne s'agit 
pas d'une commande valide pour l'interpréteur de commandes.  Le message SQL 
suivant a été renvoyé lors de son traitement :
SQL0104N Une marque inattendue "END-OF-STATEMENT" figure à la suite de "end".  
Parmi  les marques attendues, on  trouve : "JOIN <joined_table>".  
SQLSTATE=42601
 
SQL0104N Une marque inattendue "END-OF-STATEMENT" figure à la suite de "end".  Parmi  les marques attendues, on  trouve : "JOIN <joined_table>                              ".
 
Explication: 
 
Une erreur de syntaxe dans l'instruction SQL ou dans la chaîne de
commande d'entrée pour la procédure SYSPROC.ADMIN_CMD a été
détectée à la marque suivant le texte "<texte>". La zone
"<texte>" indique les 20 caractères de l'instruction SQL ou de la
chaîne de commande d'entrée pour la procédure SYSPROC.ADMIN_CMD
précédant la marque qui n'est pas valide. 
 
 En guise d'aide, une liste partielle de marques correctes est
fournie dans la zone SQLERRM de la structure SQLCA sous la forme
"<liste-marques>". Cette liste suppose que l'instruction est
correcte jusqu'à ce stade. 
 
 L'instruction ne peut pas être traitée. 
 
Réaction de l'utilisateur: 
 
Examinez et corrigez l'instruction à proximité de la marque
indiquée. 
 
 SQLCODE : -104 
 
 SQLSTATE : 42601
Pourquoi?
inge2007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 14h32   #2
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Par défaut Nouvelle question --> Nouveau fil.

Pour répondre à ta question, fais un essai en remplaçant le

declare rs AS cursor WITH RETURN FOR

par

DECLARE rs cursor WITH RETURN FOR

c'est à dire en supprimant " AS ".
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 14h46   #3
Invité régulier
 
Inscription : juin 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 24
Points : 6
Points : 6
Toujour l'erreur...
inge2007 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 19h02.


 
 
 
 
Partenaires

Hébergement Web