2016-12-06 110 views
1

我需要修改過程以包含已設置參數的新數據。我需要檢查參數的值,以便在執行之前單獨測試我的代碼。下面是有參數的代碼部分。如何檢查Oracle PLSQL中參數的值過程

PROCEDURE Get_All_MT (i IN NUMBER) 
AS 
BEGIN 
    INSERT INTO mrr_reten_mt_obp_cli (
    AMI_SCHEMA, 
    UAN, 
    PRODUCT_CLASS, 
    POL_NO 
    ) 
     SELECT a.ami_schema, 
      a.uan, 
      a.product_class, 
      a.pol_no 
     FROM mrr_retention_c_cover_item a, 
      att_axa_uan agt, 
      amt_structure str 
     WHERE a.accident_date BETWEEN TRUNC (ADD_MONTHS (SYSDATE, i - 1), 'MONTH') 
           AND TRUNC (ADD_MONTHS (SYSDATE, i), 'MONTH') 
            - (1/(60 * 60 * 24)) 

正如您可以看到參數「I」已用於accident_date範圍。我需要知道我的價值是什麼,以便它可以在代碼被單獨執行時被替換。

回答

2

登錄使用DBMS_OUTPUT值:

PROCEDURE Get_All_MT (i IN NUMBER) 
AS 
BEGIN 
    DBMS_OUTPUT.PUT_LINE(i); 
    INSERT INTO ... 
1

我會create table log_params (param varchar2(30), value varchar2(200), log_time date);和程序:

create or replace procedure log_param(param varchar2(30), value varchar2(200)) as 
pragma autonomous transaction 
begin 
insert into log_params values (param, value, sysdate); 
commit; 
end; 
/

,並在您的代碼:log_param('i', i);。然後在表log_params

+1

檢查結果正確的解決方案,但也許有點矯枉過正。 –

+0

@WernfriedDomscheit我已經發布了這個解決方案,因爲dbms_output並不總是可行的。很顯然,使用'dbms_output'會更快,但是當您想要在一段時間的調用過程中收集這些參數時,記錄和分析要容易得多。 – Kacper