Salut
J'ai la fonction suivante
Cette fonction est appelée dans cette procédure :
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
46
47
48
49 (c1 sys_refcursor) return afm_flds.enum_list%type is newEnumlistItem varchar(255); newEnumlist afm_flds.enum_list%type := null; newEnumlistItemDesc varchar(255) := null; newEnumlistTmp afm_flds.enum_list%type := null; smlstr varchar2(128); valstr varchar2(128); idxval number; begin loop FETCH c1 into newEnumlist; exit when c1%notfound; end loop; loop idxval:= instr( newEnumlist, ';' ); if idxval = 0 then smlstr:= newEnumlist; else smlstr:= substr( newEnumlist, 1, idxval - 1 ); newEnumlist:= substr( newEnumlist, idxval + 1 ); end if; exit when idxval = 0 or idxval IS NULL; idxval:= instr( newEnumlist, ';' ); if idxval = 0 then valstr:= newEnumlist; else valstr:= substr( newEnumlist, 1, idxval - 1 ); newEnumlist:= substr( newEnumlist, idxval + 1 ); end if; newEnumlistTmp := newEnumlistTmp||''''||valstr||''','''||smlstr||''','; exit when idxval = 0 or idxval IS NULL; end loop; close c1; newEnumlistTmp := substr(newEnumlistTmp, 1, length(newEnumlistTmp)-1); return newEnumlistTmp; end;
Le résultat est toujours le même, à savoir un update du champs à 'null'.
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 PROCEDURE FI_CHECK_AFM_FLDS_EXIST(pNumberAfter OUT INTEGER, pError OUT VARCHAR2) IS -- afm_flds values are corrects? sInList afm_flds.enum_list%type := ''; BEGIN pNumberAfter := 0; pError := 'OK'; --honorific select ReverseList(cursor(select enum_list from afm_flds where table_name = 'em' and field_name = 'honorific')) into sInList from dual; update temp_sap_em set honorific = decode(honorific, sInList, 'toto'); EXCEPTION WHEN OTHERS THEN ROLLBACK; pNumberAfter := 0; pError:=SQLERRM; END FI_CHECK_AFM_FLDS_EXIST;
Le décode n'est pas pris en charge.
Pourtant, si j'affiche la query, tout est correct.
Une idée sur ce qui coince ???
Merci.
Partager