Hola a todos,
Quisiera su apoyo, ya que trato de hacer una funcion, a la cual le paso una cadena grande y un caracter (separador)
(esta cadena contiene los meses del año 'ENERO FEBRERO MARZO ABRIL MAYO JUNIO JULIO AGOSTO SEPTIEMBRE OCTUBRE NOVIEMBRE DICIEMBRE'
y quiero que devuelva un arreglo de VARCHARs conteniendo por separado cada mes.
Esto es lo que he hecho:
*********************
CREATE OR REPLACE PACKAGE FIRA.PAQ_FIRA AS
TYPE VARRCHAR255 IS VARRAY(100) OF VARCHAR2(255);
FUNCTION obt_tokens( p_list in varchar2, p_sep in varchar2) return VARRCHAR255
END PAQ_FIRA;
*********************
CREATE OR REPLACE PACKAGE BODY FIRA.PAQ_FIRA AS
FUNCTION obt_tokens( p_list in varchar2, p_sep in varchar2) return VARRCHAR255
is
l_num pls_integer;
l_idx pls_integer;
l_list varchar2(32767) := trim(p_list);
l_value varchar2(32767);
v_arr VARRCHAR255;
begin
loop
l_num := 0;
l_idx := instr(l_list,p_sep);
if l_idx > 0 then
v_arr(l_num) := substr(l_list, 0, l_idx);
l_num := l_num + 1;
l_list := substr(l_list,l_idx+length(p_sep));
else
exit;
end if;
end loop;
return v_arr;
end obt_tokens;
END PAQ_FIRA;
**************************************
Y Este el el script que utilizo:
declare
type VARRCHAR255 IS VARRAY(100) OF VARCHAR2(255);
arr_meses VARRCHAR255;
lcadena varchar2(250) := 'ENERO FEBRERO MARZO ABRIL MAYO JUNIO JULIO AGOSTO SEPTIEMBRE OCTUBRE NOVIEMBRE DICIEMBRE';
begin
arr_meses := FIRA.PAQ_FIRA.obt_tokens(lcadena, ' ');
FIRA.PAQ_FIRA.obt_tokens(lcadena, ' ', arr_meses);
end;
El paquete se compila sin problemas, pero al ejecutar el script anterior, marca un error señalando que tiene argumentos de distinto tipo:
PLS-00306: wrong number or types of arguments in call to 'OBT_TOKENS'
Oyala puedan apoyarme
Gracias!