Bonjour,

Je souhaiterais utiliser un curseur dans une fonction DB2 mais je n'arrive pas à compiler, même sur un exemple très simple. La compilation plante soit sur le "FOR", soit sur le "PREPARE".

Auriez-vous une idée d'où pourrait venir le problème ?

Erreur de compilation :

DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N An unexpected token "FOR" was found following "CLARE CCB_CUR
CURSOR". Expected tokens may include: ".". LINE NUMBER=12. SQLSTATE=42601

Code de la fonction :

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
 
@
SET SCHEMA #schema#
@
@
CREATE FUNCTION getAssietteXXXCursor(
pXX INT,
pXXX VARCHAR(15),
pXXXX INT,
pXXXXX INT
)
RETURNS DOUBLE
BEGIN ATOMIC
 
DECLARE SQL_QUERY VARCHAR(800);
DECLARE SQL_STATEMENT STATEMENT;
DECLARE CCB_CUR CURSOR FOR SQL_STATEMENT;
 
SET SQL_QUERY = 'select max(COLUMNXXX) from d00.TABLEXXX WHERE XX=305998 AND XXX=5900';
 
PREPARE SQL_STATEMENT FROM SQL_QUERY;
 
OPEN CCB_CUR;
CLOSE CCB_CUR;
 
RETURN 0;
 
END
@
@