我想创建一个用于记录目的的表,当我将插入表时,我有一个执行顺序列,按RequestID方式递增。
CREATE TABLE WSRequestLog
(
RequestId NUMBER,
ExecOrder INTEGER,
MobileNo VARCHAR2(50),
CardNo VARCHAR2(50),
Log_Text VARCHAR2(4000),
DateTime date
PRIMARY KEY (RequestId, ExecOrder)
);
PROCEDURE Generate
.
.
.
IF first_condition = TRUE THEN
INSERT INTO WSRequestLog (RequestId, ExecOrder, MobileNo, CardNo, Log_Text, DateTime)
VALUES (v_req_id, Auto_Incremenet or NextVal, v_mobile_no, v_card_no, 'Performing First Step', SYSDATE);
--Execute Code
IF second_condition = TRUE THEN
INSERT INTO WSRequestLog (RequestId, ExecOrder, MobileNo, CardNo, Log_Text,DateTime)
VALUES (v_req_id, Auto_Incremenet or NextVal, v_mobile_no, v_card_no, 'First Step executed, checking next step', SYSDATE);
--Execute Code
ELSE
INSERT INTO WSRequestLog (RequestId, ExecOrder, MobileNo, CardNo, Log_Text,DateTime)
VALUES (v_req_id, Auto_Incremenet or NextVal, v_mobile_no, v_card_no, 'Second Step not applicable', SYSDATE);
--Execute Code
END IF;
END IF;
END Generate;
我的问题是如何实现这种插入? 因此,如果我执行存储过程,则日志表将如下所示:
答案 0 :(得分:1)
有一个pragma可串行重用的包,它将一个变量设置为null。 在包含核心记录器代码的其他包中,验证变量是否为null然后设置请求id变量值 - 这是一个包变量 - 您将在您的情况下递增此值。对于exec命令,请遵循以下行中的逻辑
程序set_log_sequence(p_log_sequence in number)as 开始 如果p_log_sequence为null则 gv_log_sequence:= gv_log_seq; gv_log_seq:= gv_log_seq + 1; 其他 gv_log_sequence:= p_log_sequence; 万一; 结束;