viernes, 10 de septiembre de 2010

Postgres : Funcion con Array

CREATE OR REPLACE FUNCTION general.pasa_array(varchar)
RETURNS character varying AS
$BODY$declare
matriz INTEGER[];
xresult varchar;
xcont integer;
xelementos integer;
xcadena varchar;
begin
xcont = 0;
xelementos=0;
xcadena=$1;
xresult='';
loop
matriz[xcont]=cast(substring(xcadena,1, case when position(',' in xcadena)=0 then char_length(xcadena) else position(',' in xcadena)-1 end)as integer);
RAISE NOTICE 'matriz: %', matriz[xcont];
xcadena=substring(xcadena,case when position(',' in xcadena)=0 then char_length(xcadena) else position(',' in xcadena) end+1, char_length(xcadena));
RAISE NOTICE 'Cadena: %', xcadena;
xelementos=xelementos+1;
xcont = xcont + 1;
if char_length(xcadena)=0 then
exit;
end if;
end loop;

xcont = 0;
RAISE NOTICE 'matriz: %', matriz[xcont];
--xresult = matriz[1];
loop
RAISE NOTICE 'matriz 2: %', matriz[xcont];
xresult = xresult || chr(matriz[xcont]);
RAISE NOTICE 'xresult --> %', xresult;
xcont = xcont + 1;
if matriz[xcont] is null then
exit; -- exit loop
end if;
end loop;


return xresult;

end;$BODY$
LANGUAGE 'plpgsql' VOLATILE;

select general.pasa_array('65,66')

select general.pasa_array('89,97,32,113,117,101,109,97,115,116,101,32,98,114,111,116,104,101,114')

No hay comentarios: