From: | Carlos Bazán <infobaz(at)vtr(dot)net> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Como utilizar un array dinámico en función plpgsql |
Date: | 2009-04-01 17:47:47 |
Message-ID: | 200904011347.48435.infobaz@vtr.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Yo lo acabo de hacer así:
DECLARE
mi_arreglo TEXT[] := '{}';
BEGIN
...
...
-- y lo alimento con
mi_arreglo := mi_arreglo || ARRAY[[rec.dato1::text, rec.dato2::text]];
...
etc.
Obviamente hay que preocuparse de los tipos de datos (entero, texto etc.)
dependiendo del tipo de arreglo.
Saludos
Carlos Bazán
El Wednesday 01 April 2009 13:08:28 Conxita Marín escribió:
> Gracias por tu solución, el problema és que el código del resto de la
> función es bastante complejo y ya està escrito en plpgsql.
> Esperaré aun poco a ver si alguien me da otra solución simple en plpgsql,
> sino tiraré de tablas temporales para implementar el vector.
>
> Un saludo.
>
> Conxita Marín
> Desarrollos Informáticos Modulares de Software, S.L.
> www.dims.com
>
> ----- Original Message -----
> From: "Emanuel Calvo Franco" <postgres(dot)arg(at)gmail(dot)com>
> To: "Conxita Marín" <cmarin(at)dims(dot)com>
> Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
> Sent: Wednesday, April 01, 2009 5:17 PM
> Subject: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Como utilizar un array
> dinámico en función plpgsql
>
> El día 1 de abril de 2009 4:29, Conxita Marín <cmarin(at)dims(dot)com> escribió:
> > Buenas.
> >
> > Necesitaria utilizar un array de 2 dimensiones que puede tener de 1 a 999
> > elementos.
> >
> > Algo así:
> >
> > DROP FUNCTION pepe (integer);
> > CREATE FUNCTION pepe(tamano integer) RETURNS integer
> > AS $_$
> > declare
> > matriz integer[][];
> > i integer;
> > BEGIN
> > for i in 1..tamano loop
> > matriz[i][1] = 1;
> > matriz[i][2] = 2;
> > end loop;
> > return 0;
> > END;
> > $_$
> > LANGUAGE plpgsql;
>
> No se si te sirve, lo hice con plperl.
>
> CREATE OR REPLACE FUNCTION matriz(integer) returns integer language
> 'plperl' as $_$
> $array = ();
> my $numero = 0;
> for ($numero;$numero < $_[0]; $numero++){
> $array[$numero][1] = 1;
> $array[$numero][2] = 2;
> }
> return 0;
> $_$;
>
> > Al intentar rellenar el array sale este error:
> >
> > select pepe(10);
> > ERROR: invalid array subscripts
> > CONTEXT: PL/pgSQL function "pepe" line 7 at assignment
> > Buscando en los foros, parece ser que hay que inicializar el array en la
> > declaración, és así?, si así es, ¿hay alguna manera de inicializar sin
> > tener
> > que declarar todos los elementos?
> >
> > Saludos.
> >
> > Conxita Marín
> > Desarrollos Informáticos Modulares de Software, S.L.
> > www.dims.com
From | Date | Subject | |
---|---|---|---|
Next Message | Emanuel Calvo Franco | 2009-04-01 17:55:03 | Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Como utilizar un array dinámico en función plpgsql |
Previous Message | Miguel Angel | 2009-04-01 17:37:06 | Re: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Como utilizar un array dinámico en función plpgsql |