簡體   English   中英

PLS-00222 此范圍內不存在名為“WRITE_ERROR_LOG”的函數

[英]PLS-00222 no function with the name 'WRITE_ERROR_LOG' exists in this scope

剛剛寫完一個錯誤日志程序,將錯誤記錄到一個表中。 我剛剛完成了我的第一個異常處理程序,由於這個錯誤我無法編譯包。

我相信當我調用 write_error_log 過程時會收到此錯誤。 下面是包中的代碼。

CREATE OR REPLACE PACKAGE BODY AOMS.customer IS

    PROCEDURE 
customer_collateral_hist(i_Vcust_cd   IN  customer_collateral_history.cust_cd%TYPE,
                                   i_Vfromdate  IN customer_collateral_history.reg_dttm%TYPE,
                                   i_Vtodate    IN customer_collateral_history.reg_dttm%TYPE,
                                   i_Vauthstat  IN customer_collateral_history.auth_stat%TYPE,
                                   o_Cresultset OUT SYS_REFCURSOR)
   AS
        v_in_out_parm VARCHAR2(4000) := NULL;

 BEGIN
     OPEN o_Cresultset FOR
     SELECT auth_stat,
            buld_size,
            clos_dt,
            cnfm_dt,
            cnfm_tm,
            cnfm_user_id,
            cust_cd,
            date_seq,
            dbtr,
            dbtr_addr,
            dbtr_id,
            dbtr_tel_no,
            dbtr_zip_cd1,
            dbtr_zip_cd2,
            esta_orga,
            grnt_dt_from,
            grnt_dt_to,
            jdg_amt,
            jdg_dt,
            land_size,
            loc_addr,
            mort_amt,
            mort_chng_dt,
            mort_flag,
            mort_max_amt,
            mort_seq,
            mort_stat,
            old_key,
            ownr,
            ownr_addr,
            ownr_id,
            ownr_tel_no,
            ownr_zip_cd1,
            ownr_zip_cd2,
            prev_mort_amt,
            redm_dt,
            reg_dt,
            reg_dttm,
            reg_flag,
            reg_user_id,
            remark,
            supr_pow_flag
       FROM customer_collateral_history
      WHERE cust_cd LIKE '%'||NVL(i_Vcust_cd, cust_cd)||'%'
        AND TO_NUMBER(SUBSTR(reg_dttm, 1, 8)) >= NVL(i_Vfromdate,   TO_NUMBER(SUBSTR(reg_dttm, 1, 8)))
    AND TO_NUMBER(SUBSTR(reg_dttm, 1, 8)) <= NVL(i_Vtodate, TO_NUMBER(SUBSTR(reg_dttm, 1, 8)))
    AND auth_stat LIKE '%'||NVL(i_Vauthstat, auth_stat)||'%';
  EXCEPTION
WHEN OTHERS THEN

  V_IN_OUT_PARM :=  'vcust_cd: '||i_vcust_cd||'fromdate:' ||i_vfromdate|| 'vtodate:' ||i_vtodate|| 'authstat:' || i_vauthstat||

   write_error_log(SQLERRM,dbms_utility.format_error_backtrace,V_IN_OUT_PARM);
   -- if you want to halt execution re-raise the error up the stack
   RAISE;
 END customer_collateral_hist;

END customer;
/

有誰知道是什么原因造成的。 write_error_log 是一個存儲過程。 如果有更多信息,我可以向任何人提供,請告訴我。

我認為錯誤在這一行:

V_IN_OUT_PARM :=  'vcust_cd: '||i_vcust_cd||'fromdate:' ||i_vfromdate|| 'vtodate:' ||i_vtodate|| 'authstat:' || i_vauthstat||

結局似乎有些出乎意料。 還有什么需要連接到V_IN_OUT_PARAM還是最后一個|| 是一個; ?

因為你已經用||結束了 ,它在 Oracle 看來好像您想將調用write_error_log的結果連接到此字符串。 當然,您不能這樣做,因為您沒有名為write_error_log的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM