我需要从另一个过程调用logger过程('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
问题在于,如果在执行过程中调用p_ADD_TO_LOG
,则会发生错误或执行过程将不会提交,而IN_MESSAGE
将不会写入tmp_logging
表。
这似乎是因为这些程序是在同一个交易中执行的。
如何更改'p_ADD_TO_LOG',以便在未确认事务或调用过程中发生错误时写入日志?
答案 0 :(得分:0)
我刚刚在pocedure中添加了IN AUTONOMOUS TRANSACTION 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
它有效。