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....@gmail.com> > To: "Conxita Marín" <cma...@dims.com> > Cc: <pgsql-es-ayuda@postgresql.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 <cma...@dims.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 -- TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net