Logging 如何在Firebird 2.5中创建脚本日志记录过程?
我需要从另一个过程调用记录器过程(“p_ADD_to_LOG”),以了解脚本是如何执行的 我的记录器看起来像:Logging 如何在Firebird 2.5中创建脚本日志记录过程?,logging,firebird,firebird2.5,Logging,Firebird,Firebird2.5,我需要从另一个过程调用记录器过程(“p_ADD_to_LOG”),以了解脚本是如何执行的 我的记录器看起来像: create PROCEDURE p_ADD_TO_LOG ( IN_MESSAGE Varchar(1024) NOT NULL DEFAULT 'EMPTY' ) AS BEGIN INSERT INTO tmp_logging (ID, mess) VALUES (gen_id(id_gen, 1), :IN_MESSAGE) ; suspend; END 问题是,如果
create PROCEDURE p_ADD_TO_LOG (
IN_MESSAGE Varchar(1024) NOT NULL DEFAULT 'EMPTY'
)
AS
BEGIN
INSERT INTO tmp_logging (ID, mess)
VALUES (gen_id(id_gen, 1), :IN_MESSAGE) ;
suspend;
END
问题是,如果在调用p\u ADD\u TO\u LOG
的执行过程中,发生错误或执行的过程不会提交,则in\u消息
不会写入tmp\u日志
表
这似乎是因为这些程序是在同一个事务中执行的
如何更改“p_ADD_to_LOG”,以便在事务未确认或调用的过程中发生错误时写入日志?我刚刚在过程中的自治事务DO中添加了
create PROCEDURE p_ADD_TO_LOG (
IN_MESSAGE Varchar(1024) NOT NULL DEFAULT 'EMPTY'
)
AS
BEGIN
IN AUTONOMOUS TRANSACTION DO
INSERT INTO tmp_logging (ID, mess)
VALUES (gen_id(id_gen, 1), :IN_MESSAGE) ;
suspend;
END
它是有效的。我刚刚在自治事务中添加了,在程序中添加了
create PROCEDURE p_ADD_TO_LOG (
IN_MESSAGE Varchar(1024) NOT NULL DEFAULT 'EMPTY'
)
AS
BEGIN
IN AUTONOMOUS TRANSACTION DO
INSERT INTO tmp_logging (ID, mess)
VALUES (gen_id(id_gen, 1), :IN_MESSAGE) ;
suspend;
END
在自治事务中,<>代码> 将帮助我。如果您设法在自动事务< /代码>中使用<代码>解决您的问题,请考虑用解决方案的详细信息发布您自己的答案。它也可以帮助其他人。在自治事务中,<>代码> <代码>将帮助我。如果您在自动事务< /代码>中使用<代码>解决了您的问题,请考虑用解决方案的详细信息发布您自己的答案。它也可能帮助其他人。