nota all'esempio 5
----- fn_trasc ('da-mvs') segnala l'errorenella funzione
create or replace function fn_comp3(x number , ncifre smallint, autoconv char default 's') return varchar2 is y varchar2(30); xs varchar2(30); s varchar2(30); l smallint; ndec smallint; segno char; xcifre smallint :=ncifre; begin if xcifre mod 2 =0 then xcifre := xcifre+1; end if; xs := ltrim(to_char( nvl(x,0) , rpad('0',xcifre,'9'))) ; ----- nel caso di numeri che non rientrano nel numero di cifre specificato, xs risulta '##..##' , la fn_hex2dec ritorna quindi null e la ----- fn_trasc ('da-mvs') segnala l'errore l:= length(xs) ; if x<0 then segno :='D'; else segno :='C'; end if; while l>0 loop s:= substr (xs,l); xs:= substr (xs,1,l-1); if length(s)=1 then s:=s|| segno ; end if; ndec:=fn_hex2dec (s) ; if ndec = 0 then ndec :=204; ------- necessario * probl con chr(0) = fine stringa end if; y := chr(ndec ) || y ; l:=l-2; end loop; if autoconv='s' then y:= fn_trasc(y, 'da-mvs'); end if; return y; --------- y := hextoraw( x||'C'); ma non funziona.. end; /per ottenere gli errori "veri":
errori:
NAME | TYPE | SEQUENCE | LINE | POSITION | TEXT |
---|---|---|---|---|---|
FN_COMP3 | FUNCTION | 1. | 43. | 12. | PLS-00201: identifier 'FN_TRASC' must be declared |
FN_COMP3 | FUNCTION | 2. | 43. | 8. | PL/SQL: Statement ignored |
select line , text, rawtohex (text) from user_source where name ='FN_COMP3'ritorna per la riga 19 (quella contenete un apice "spaiato") il valore hextoraw