From: | Alejandro Carrillo <fasterzip(at)yahoo(dot)es> |
---|---|
To: | Rodrigo Gonzalez <rjgonzale(at)estrads(dot)com(dot)ar> |
Cc: | "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: recorrer old |
Date: | 2011-11-08 18:10:03 |
Message-ID: | 1320775803.15660.YahooMailNeo@web27408.mail.ukl.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Intenté hacerlo pero me sale el error:
ERROR: los subíndices de arrays están fuera de rango
CONTEXT: PL/pgSQL function "fn_borradocopia" line 10 at asignación
********** Error **********
Acá esta el script:
create or replace function public.fn_borradocopia () returns trigger
as
$$
declare
arrDatos bytea[][];
i integer =1;
r record;
begin
FOR r IN SELECT (each(hstore(OLD))).*
LOOP
arrDatos[i][1] := r.key;
arrDatos[i][2] := r.value;
--RAISE NOTICE 'key:%, value: %', r.key, r.value;
i=i+1;
END LOOP;
insert into borradoscopia values (TG_RELNAME,arrDatos);
return OLD;
end;
$$
LANGUAGE plpgsql VOLATILE
COST 100;
--aca van cada trigger para cada tabla
drop TRIGGER trg_borradocopia on clientesborradocopia;
CREATE TRIGGER trg_borradocopia BEFORE DELETE ON clientesborradocopia
FOR EACH ROW EXECUTE PROCEDURE fn_borradocopia () ;
¿Que estoy haciendo mal?
Gracias
>________________________________
>De: Rodrigo Gonzalez <rjgonzale(at)estrads(dot)com(dot)ar>
>Para: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
>CC: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
>Enviado: viernes 4 de noviembre de 2011 12:05
>Asunto: Re: [pgsql-es-ayuda] recorrer old
>
>
>El 04/11/11 13:56, Alejandro Carrillo escribió:
>Y eso me soporta bien la copia de tipos de datos binarios (oid, public.lo, bytea)???
>>
No tengo idea...pero es simple de probar con una funcion que lea de una tabla y muestre los datos no?
>Si haces las pruebas por favor envia tus resultados para que los
demas sepamos
>
>Gracias
>
>Rodrigo
>
>
>>
>>
>>>________________________________
>>>De: Rodrigo Gonzalez <rjgonzale(at)estrads(dot)com(dot)ar>
>>>Para: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
>>>CC: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>; "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
>>>Enviado: viernes 4 de noviembre de 2011 11:29
>>>Asunto: Re: [pgsql-es-ayuda] recorrer old
>>>
>>>
>>>El 04/11/11 11:46, Alejandro Carrillo escribió:
>>>y de ahi como la paso a array?? con select array((each(hstore(clientesborradocopia))).value) from clientesborradocopia where idcliente = 4
>>>>no me deja
>>>>
Lee http://okbob.blogspot.com/2009/10/dynamic-access-to-record-fields-in.html
>>>
>>>Lo interesante para vos es:
>>>
>>>
>>>FOR r IN SELECT (each(hstore(NEW))).* LOOP RAISE NOTICE 'key:%, value: %', r.key, r.value; END LOOP; O sea que ahi tenes lo que precisas para leer NEW y OLD Espero que te sirva Saludos Rodrigo
>>>
>>>
>>>>
>>>>
>>>>>________________________________
>>>>>De: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>>>>>Para: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
>>>>>CC: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
>>>>>Enviado: viernes 4 de noviembre de 2011 9:30
>>>>>Asunto: Re: [pgsql-es-ayuda] recorrer old
>>>>>
>>>>>
>>>>>Excerpts from Alejandro Carrillo's
message of jue nov 03 15:43:29 -0300
2011:
>>>>>> Buenas tardes,
>>>>>>
>>>>>> Conocen como copiar los datos del
registro OLD, en los triggers de
plpgsql, de la siguiente forma (o con
alguna otra forma):
>>>>>>
>>>>>> arrDatos bytea[];
>>>>>>
>>>>>> for (e=0;e<=OLD.numcampos;e++){
>>>>>> arrDatos[e]=old[e]::bytea;
>>>>>> }
>>>>>
>>>>>QUizas podrias usar hstore; tiene una
funcion que convierte un record
>>>>>en un hstore si mal no recuerdo.
>>>>>
>>>>>--
>>>>>Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Angel | 2011-11-08 18:36:30 | averiguar la estructura de una función |
Previous Message | Alvaro Herrera | 2011-11-08 16:07:09 | Re: Buscar texto con prefijo y sufijo determinado |