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;
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 |