Bonjour,
j'ai un problème avec une UDF (User Defined Fonction) ...
J'ai créé une table "GLOBAL TEMPORARY TABLE" ...
Maintenant, je voudrais définir une UDF qui va me remplir cette table ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CREATE GLOBAL TEMPORARY TABLE NS_ID_TAB (NS_ID INTEGER NOT NULL) ;
J'ai donc un string en input séparé par des , (AI_NS_ID_STR VARCHAR (4000)) que je veux parser / spliter dans la table temporaire ... mais j'ai un soucis lors de la définition de cette UDF ...
Avez-vous une idée sur le pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SQLCODE = -199, ERROR: ILLEGAL USE OF KEYWORD DECLARE. TOKEN <END-OF-STATEMENT> SPECIFIC FENCED RETURN SOURCE PARAMETER WAS EXPECTED
Voici le code de l'UDF ...
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 CREATE FUNCTION TOTO.PARSING ( AI_NS_ID_STR VARCHAR (4000) ) RETURNS LANGUAGE SQL MODIFIES SQL DATA EXTERNAL ACTION DECLARE I_STT INTEGER ; DECLARE I_LGT INTEGER ; DECLARE I_CMA INTEGER ; DECLARE L_NS_ID INTEGER ; SET I_STT = 1; SET I_LGT = LENGTH(AI_NS_ID_STR); SET I_CMA = LOCATE(',',AI_NS_ID_STR,I_STT); WHILE I_CMA > 0 DO SET L_NS_ID = INT(SUBSTR(AI_NS_ID_STR,I_STT,I_CMA - I_STT)); INSERT INTO TOTO.NS_ID_TAB (NS_ID) VALUES (L_NS_ID); SET I_STT = I_CMA + 2; SET I_CMA = LOCATE(',',AI_NS_ID_STR,I_STT); END WHILE; SET L_NS_ID = INT(SUBSTR(AI_NS_ID_STR,I_STT,I_LGT - I_STT + 1)); INSERT INTO TOTO.NS_ID_TAB (NS_ID) VALUES (L_NS_ID)% RETURN 1%
Partager