2016-12-26 19 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

謝謝,夥計! –