Ver Mensaje Individual
  #2  
Antiguo 28-10-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Quizá esto te sirva.

Los procedimientos almacenados se guardan en una de las llamadas tablas del sistema: RDB$Procedures. Al menos en Firebird 1.5, no veo que este tipo de tablas tengan un campo que almacene la fecha y hora de creación o última modificación. Lo bueno es que Firebird permite agregarles más campos.

Hice una prueba con la siguiente macroinstrucción (script en inglés ), y me resultó efectiva:

Código SQL [-]
-- Agregamos un campo de fecha y hora a la tabla de los procedimientos 
Alter Table RDB$Procedures Add FechaModificacion TimeStamp;  
/* Creamos disparador para alimentar ese campo cuando un procedimiento sea creado o modificado */ 
Create Trigger tgbiuRDB$ProceduresFechaM From RDB$Procedures
Active Before Insert Or Update Position 0 
As
Begin
  New.FechaModificacion = Current_TimeStamp; 
End;

Haciendo lo mismo, cada vez que desees conocer la fecha y hora de la última modificación de un procedimiento almacenado, sólo tendrías que realizar la consulta:

Código SQL [-]
Select FechaModificacion From RDB$Procedures   
Where RDB$Procedure_Name = NombreDelSP

Desde luego, los disparadores no son retroactivos. Tendrás que provocar un Alter Procedure para cada procedimiento ya existente a fin de rellenar el nuevo campo o, si prefieres, puedes establecerlo directamente con una sentencia "Update RDB$Procedures Set FechaModificacion =...".

Asimismo, existen otras tablas del sistema donde se guardan las tablas y demás objetos de la base de datos, a las cuales puedes aplicar la misma técnica.

Saludos.

Al González.

Última edición por Casimiro Notevi fecha: 29-10-2011 a las 20:01:36.
Responder Con Cita