El día 1 de abril de 2009 15:23, Alvaro Herrera
<[email protected]> escribió:
> Conxita Marín escribió:
>
>
> Creo que esto debería poder hacerse de alguna forma sencilla pero no
> tengo tiempo de buscarla en este momento; lo que conseguí fue lo
> siguiente: (atención, código sin probar)
>
> declare
>  matriz integer[] = '{{1,2}}';
>  i integer;
> begin
>  for i in 1 .. tamano loop
>    matriz := matriz || '{1,2}'::integer[];
>  end loop;
> end;
>

ubuntu=# CREATE OR REPLACE FUNCTION pepe(tamano integer) RETURNS integer AS $_$
ubuntu$# declare
ubuntu$#  matriz integer[] = '{{1,2}}';
ubuntu$#  i integer;
ubuntu$# begin
ubuntu$#  for i in 1 .. tamano loop
ubuntu$#    matriz := matriz || '{1,2}'::integer[];
ubuntu$#    -- matriz[i] := 1;
ubuntu$#    RAISE NOTICE 'matriz: %', matriz[i];
ubuntu$#  end loop;
ubuntu$#  return matriz[1];
ubuntu$# end;
ubuntu$# $_$ LANGUAGE plpgsql;
CREATE FUNCTION
ubuntu=# select pepe(8);
NOTICE:  matriz: <NULL>
NOTICE:  matriz: <NULL>
NOTICE:  matriz: <NULL>
NOTICE:  matriz: <NULL>
NOTICE:  matriz: <NULL>
NOTICE:  matriz: <NULL>
NOTICE:  matriz: <NULL>
NOTICE:  matriz: <NULL>
 pepe
------

(1 row)


Faltaría asignarle los valores, pero no probé la asignación de
valores aún.

> BTW es más fácil hacer "create or replace pepe" que "drop function;
> create function".

seguro! :)



-- 
      Emanuel Calvo Franco
        Sumate al ARPUG !
      (www.postgres-arg.org -
         www.arpug.com.ar)
    ArPUG / AOSUG Member
   Postgresql Support & Admin
--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
    (envía "unregister TuDirecciónDeCorreo" a [email protected])

Responder a