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" <[email protected]>
To: "Conxita Marín" <[email protected]>
Cc: <[email protected]>
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 <[email protected]> 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
--
Emanuel Calvo Franco
Sumate al ARPUG !
(www.postgres-arg.org -
www.arpug.com.ar)
ArPUG / AOSUG Member
Postgresql Support & Admin
--
TIP 8: explain analyze es tu amigo
--
TIP 7: no olvides aumentar la configuración del "free space map"