2016-12-26 1 views
0

Ich möchte eine Tabelle für den Zweck der Protokollierung in einer Weise erstellen, dass, wenn ich in die Tabelle einfügen Ich habe eine Spalte Ausführungsreihenfolge, die pro RequestID-weise erhöhen.Oracle - Wie erstellt man eine Tabelle mit zwei Spalten, die wie ein 2D-Array wachsen?

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; 

Meine Frage ist, wie man diese Art der Insertion erreichen kann? Also, wenn ich die gespeicherte Prozedur ausführen, würde die Log-Tabelle so aussehen:

For Demonstration purpose

+5

Sie haben vergessen, eine Frage zu stellen – GurV

+0

Ihre "Generieren" -Prozedur müsste Ausführungsreihenfolge in die Einfügung übergeben, oder einfach eine Sequenz verwenden, und wenn alles, was Sie interessiert, Datensätze in der richtigen Reihenfolge zurück erhält. – OldProgrammer

Antwort

1

Haben Sie ein Paket, das Pragma seriell wiederverwendbar ist, die eine Variable auf null gesetzt haben. Überprüfen Sie in einem anderen Paket, das den Core Logger-Code enthält, ob die Variable null ist und setzen Sie dann den Variablenwert der Anforderungs-ID - was eine Paketvariable ist. Sie erhöhen diesen Wert in Ihrem Fall. für exec, um die Logik wie in unten Linien

Verfahren set_log_sequence (p_log_sequence an der Zahl), wie beginnen folgen, wenn p_log_sequence null ist, dann gv_log_sequence: = gv_log_seq; gv_log_seq: = gv_log_seq + 1; sonst gv_log_sequence: = p_log_sequenz; Ende wenn; Ende;

+0

Danke, Kumpel! –

Verwandte Themen