Ver Mensaje Individual
  #1  
Antiguo 09-11-2010
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Reputación: 14
martinartaza Va por buen camino
Ayuda para capturar 'Raise Notice' de postgres en delphi 6 o 7.

Hola querido foro yo de nuevo por acá haciendo preguntas que no encuentro por la web.
Estoy programando usando Delphi 6, 7 (según la maquina que me siento, hay distintos proyecto con distintas librerias) y todos usando postgres SQL.
En postgres tengo funciones que usan el raise exception y a eso la capturo bien desde delphi, pero postgres también posee lo que se llama raise notice, y habia estado evitando usarlo debido a que no sabia como capturarlo, ahora en este momento me va a simplificar mucho la vida.
Lo que necesito es saber como capturo el raise notice de postgres.
Ejemplo

En sql tengo la siguiente función.
Código SQL [-]

CREATE OR REPLACE FUNCTION registrarpagofacil(p_fecha date, p_import numeric, p_idctacte integer, p_vencim1 date, p_import1 numeric, p_vencim2 date, p_import2 numeric, p_vencim3 date, p_import3 numeric)
  RETURNS void AS
$BODY$
DECLARE
  CtaCte_Cliente RECORD;
BEGIN
....
....
....
  SELECT * INTO CtaCte_Cliente 
  FROM CtaCte_Clientes ccc 
  LEFT JOIN ClientesCuentas cc USING(idCuenta) 
  WHERE idCtaCte = p_idCtaCte;
  IF CtaCte_Cliente IS NULL THEN
    RAISE EXCEPTION 'Clave primaria de cuenta corriente: % de cliente no encontrada', p_idCtaCte;
  END IF;
...
...
...
-- Si llego hasta el final, termino bien.
RAISE NOTICE 'La operación con la cuenta corriente: % a sido exitosa', p_idCtaCte
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION registrarpagofacil(p_fecha date, p_import numeric, p_idctacte integer, p_vencim1 date, p_import1 numeric, p_vencim2 date, p_import2 numeric, p_vencim3 date, p_import3 numeric) OWNER TO postgres;


El motivo por el cual quiero saber si termino bien, es que este proceso se tira, al leer un arhivo que tiene n lineas, y si una linea del archivo anda mal, se cancela la operación, con raise exception solo puedo saber que una linea termino mal, pero con el raise notice puedo leer cuantas lineas terminaron bien, y saber en que linea del archivo buscar el problema.

Ojo, no quiero atrapar el raise notice con una excepcion del programa, a la excepcion de postgres la atrapo con un bloque try except, pero al raise notice de postgres, simplemente lo quiero mostrar en un ListBox.

Bueno, en conclusion lo que quiero hacer es algo por el estilo.

Código Delphi [-]
listbox1.add(raise notice de postgres)

Desde ya muchas gracias y recuerde como siempre busque en otros lados (en español) y no encontré nada al respecto.
Responder Con Cita