Re: ARRAY + PLPGSQL

From: "angel Iracheta" <angel(dot)iracheta(at)gmail(dot)com>
To: "fabian olmos" <fabianolmos806(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ARRAY + PLPGSQL
Date: 2007-03-24 02:00:18
Message-ID: 62b484730703231900r7059e8efv3cfb8870ef691e90@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> El 23/03/07, fabian olmos <fabianolmos806(at)gmail(dot)com> escribió:
> graciass pero sisculpa la molestia en el caso que el array sea integer.

Ok, vamos a hacer lo siguiente:

1. Genera esta función:

CREATE OR REPLACE FUNCTION prueba_array(integer[])
RETURNS void AS
$BODY$
DECLARE
f_array ALIAS FOR $1;
f_ciclo integer;
f_posini integer;
f_posfin integer;
BEGIN
f_posini:=POSITION(':' IN array_dims(f_array))+1;
f_posfin:=POSITION(']' IN array_dims(f_array));
FOR f_ciclo IN 1..SUBSTRING(array_dims(f_array) FROM f_posini FOR
f_posfin-f_posini)::INT LOOP
RAISE NOTICE 'Fila: %',f_ciclo;
RAISE NOTICE 'Valor: %',f_array[f_ciclo];
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

2. Ahora prueba con lo siguiente: select
prueba_array('{10,20,30,40,50,60,70,80,90,100}');

3. Te debería arrojar la siguiente:

NOTICE: Fila: 1
NOTICE: Valor: 10
NOTICE: Fila: 2
NOTICE: Valor: 20
NOTICE: Fila: 3
NOTICE: Valor: 30
NOTICE: Fila: 4
NOTICE: Valor: 40
NOTICE: Fila: 5
NOTICE: Valor: 50
NOTICE: Fila: 6
NOTICE: Valor: 60
NOTICE: Fila: 7
NOTICE: Valor: 70
NOTICE: Fila: 8
NOTICE: Valor: 80
NOTICE: Fila: 9
NOTICE: Valor: 90
NOTICE: Fila: 10
NOTICE: Valor: 100

Total query runtime: 94 ms.
1 rows retrieved.

Saludos!

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ivan Figueroa 2007-03-24 02:15:13 Re: Mejora de postgres sobre 64 bits
Previous Message guillermo arias 2007-03-24 01:34:52 procedimientos almacenados - duda