Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2008
jmlifi jmlifi is offline
Miembro
 
Registrado: abr 2005
Posts: 188
Poder: 20
jmlifi Va por buen camino
Firebird : triggers

Hola a todos!!!

Tengo el siguiente trigger:
Código Delphi [-]
CREATE TRIGGER ACTSUB FOR LNSUBCONT ACTIVE
AFTER INSERT POSITION 0
as
declare Variable EsCorte Char;
declare variable EsTrabajo Integer;
begin
   select Corte,Ordentrabajo from SubContratos where codigo = New.Codigo
   into :EsCorte,:EsTrabajo;
   if (((EsCorte='S') or (EsCorte='C')) and (EsTrabajo is null))  then
      update PzasPdtes set PdtesP = PdtesP - new.Cant,
      SubCont= new.Codigo  
      where  (PzasPdtes.O_Ped  = new.O_Ped) and
             (PzasPdtes.Pedido = new.Pedido);
   else
      update Ubicacionpzas set TratmtoAct= new.Tratmto, subcon=new.codigo
      where  (Ubicacionpzas.O_Ped  = new.O_Ped) and
             (Ubicacionpzas.Pedido = new.Pedido);
end

Quiero introducir un mensaje para saber que parte del código me ejecuta. En oracle se que se utiliza DBMNS...

¿hay posibilidad de hacerlo?

saludos
Responder Con Cita
  #2  
Antiguo 12-08-2008
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Desde un SP yo uso una DLL que proporciona una función (UDF) que permite almacenar en un archivo de texto un mensaje. Como la DLL se encuentra en el servidor, el archivo será creado ahí. Es una herramienta interesante que uso para depurar el código y también para almacenar logs según se van ejecutando órdenes dentro de un SP.

La forma de usarla es simple:

Código SQL [-]
SELECT DEBUGGER('Este es un mensaje generado el  ' || CAST(CAST('NOW' AS TIMESTAMP) AS VARCHAR(24)), 'D:\Logs\Log0001.log', '1')
FROM RDB$DATABASE INTO ebuggerResult;

Esta sentencia creará el archivo Log0001.log en la ubicación D:\Logs en el servidor. Dentro de este archivo el mensaje: "Este en un mensaje generado el 2008-08-12 13:33:18.0000"

DEBUGGER es una UDF previamente declarada en la base de datos así:

Código SQL [-]
DECLARE EXTERNAL FUNCTION DEBUGGER
  CSTRING(255), CSTRING(255), CSTRING(2)
  RETURNS INTEGER BY VALUE
  ENTRY_POINT 'debugger' MODULE_NAME 'ibdebug';

y la DLL ibdebug puedes construirla tu mismo usando Delphi, lenguaje C, u otro lenguaje.

Como se trata de una sentencia SQL normal que usa una función definida por el usuario puedes usarla dentro de tu TRIGGER.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 12-08-2008 a las 19:35:24.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Triggers Firebird Lynn Firebird e Interbase 6 24-09-2007 21:32:43
Triggers de auditoria en firebird 1.5 robertoe Firebird e Interbase 1 04-01-2007 04:18:11
Disparo de triggers en Firebird sur-se Firebird e Interbase 7 07-11-2006 09:38:24
Firebird 1.0.3 -- Recusividad de Triggers y Procedimientos Almacenados jverasobino Firebird e Interbase 1 27-12-2004 18:00:58
Problemas Triggers Firebird ISCOPYME Firebird e Interbase 2 29-06-2004 22:05:12


La franja horaria es GMT +2. Ahora son las 12:29:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi