2016-12-26 21 views
0

我想为记录目的创建一个表格,当我插入到表格中时,我有一个执行顺序列,每个RequestID明智地递增。Oracle - 如何创建两列生长如二维数组的列表?

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; 

我的问题是如何实现这种类型的插入? 所以,如果我执行存储过程,日志表会是这样:

For Demonstration purpose

+5

您忘记了提问 – GurV

+0

您的“生成”过程必须将执行顺序传递给插入,或者只是使用一个顺序,并且如果您关心的是将记录恢复为正确的顺序。 – OldProgrammer

回答

1

有一个包是编译连续重复使用,这将有一个变量设置为NULL。 在其他包含核心记录器代码的包中,验证变量是否为空,然后设置请求变量值 - 这是一个包变量 - 在您的情况下,您将增加此值。对于EXEC顺序按照逻辑在下面线

过程set_log_sequence(p_log_sequence在号码) 开始 如果p_log_sequence为null,则 gv_log_sequence:= gv_log_seq; gv_log_seq:= gv_log_seq + 1; else gv_log_sequence:= p_log_sequence; end if; 结束;

+0

谢谢,伙计! –