Je susi debutant en db2, j'essaie d'ecrire une procedure stockée sous l'éditeur du control center :
erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Pourquoi?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager