Utilisation d'un retour de fonction dans un decode
Salut
J'ai la fonction suivante
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 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; |
Cette fonction est appelée dans cette procédure :
Code:
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 résultat est toujours le même, à savoir un update du champs à 'null'.
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.