Re: [pgsql-es-ayuda] Como utilizar un array dinámico en función plpgsql

From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Conxita Marín <cmarin(at)dims(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: [pgsql-es-ayuda] Como utilizar un array dinámico en función plpgsql
Date: 2009-04-01 18:35:45
Message-ID: f205bb120904011135v5f361927mf5a77fc44d215a27@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 1 de abril de 2009 15:23, Alvaro Herrera
<alvherre(at)alvh(dot)no-ip(dot)org> 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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Emanuel Calvo Franco 2009-04-01 18:37:22 Re: consulta demasiado grande
Previous Message Rodriguez Fernando 2009-04-01 18:35:12 Re: consulta demasiado grande