Intento de hacer log - Parte II

From: Marcelino Guerrero <mguerreroh(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Intento de hacer log - Parte II
Date: 2006-11-20 20:32:50
Message-ID: 456210F2.9070008@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Amigos,

Hace unos días envie un mensaje para hacer una especie de Log, el procedimiento me funciono muy bien, pero hay algo que
no considere y es que si necesito eliminar varios registros, el procedimiento anterior me daqba error, solo podia
eliminar 1 registro.

Con la siguiente función pretendo corregir esto, pero tengo el siguiente problema, en valor_campo pretendo colocar el
contenido de un determinado campo, por ejemplo en el actual codigo tengo "valor_campo = xtabla.n_cliente", el valor de
valor_campo va a ser el nombre del cliente, pero quisiera que esto vaya cambiando conforme a los campos que puedo tener,
por Ejemplo codigo, n_cliente, ruc, telefono, etc., estos campos estan en mviews.

Hasta el momento no he podido hacerlo, agradecere me pudieran ayudar ya que esto es muy importante.

Slds

Procedimiento:

CREATE OR REPLACE FUNCTION log_eliminar_3("varchar", "varchar", "varchar", "varchar")
RETURNS void AS
$BODY$

DECLARE
-- $1 es tabla a la que se le hara el log
-- $2 campo de ID o el de la condicional
-- $3 valor del campo que debera de igualarse en la condicional
-- $4 usuario que elimina el registro
mviews RECORD;
xtabla RECORD;
xcont int2;
xx21 alias for $1;
valor_campo varchar;
BEGIN
xcont =0;

FOR xtabla IN execute 'select * from ' || xx21 || ' where ' || $2 || ' = ' || quote_literal($3) LOOP
xcont = xcont + 1;

FOR mviews IN select atributo.attname as campo from pg_attribute atributo, pg_class clase, pg_tables tablas
where atributo.attrelid=clase.relfilenode and atributo.attstattarget = '-1' and
clase.relname=tablas.tablename and tablas.tablename = $1 order by atributo.attname LOOP
valor_campo = xtabla.ruc;
execute 'insert into eliminados.log_' || $1 || ' (seq,campo,contenido,usuario) values(' || xcont || ',' ||
quote_literal(mviews.campo) || ', ' || valor_campo || ', '|| quote_literal($4) || ')';
END LOOP;
END LOOP;
RETURN;
END$BODY$
LANGUAGE 'plpgsql' VOLATILE;

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Raúl Mero Moreira 2006-11-20 20:53:30 Re: problema con phppgadmin
Previous Message Raul Andres Duque 2006-11-20 20:02:58 Re: problema con phppgadmin