2016-12-15 557 views
1

我試圖執行此過程,但得到無差錯的對象無效 用戶具有足夠privileges..please幫助ORA-06550:第1行,第7列:PLS-00905:對象DMQ1STG.CPS_SCHEDULE_SETUP_PROCESS無效

CREATE OR REPLACE PROCEDURE CPS_SCHEDULE_SETUP_PROCESS 
IS 
    CURSOR cpsSCHEDULErecords 
    IS 
     SELECT * 
     FROM cps_schedule_setup 
     WHERE active = 'Yes' AND complete = 'No';--decode(recurring,'Yes',end_date + 3 + 3.335/4, end_date + 1 + 3.335/4) <= sysdate and end_date + 1 + 1/3 <= sysdate and NVL(schedule_date,SYSDATE) <= sysdate; 

    nWorkList  INTEGER := 0; 

    nSchedule  INTEGER := 0; 

    dNewEndDT  DATE; 

    dNewStartDT DATE; 
BEGIN 
    FOR rec IN cpsSCHEDULErecords 
    LOOP 
     DBMS_OUTPUT.PUT_LINE (
      ' Processing - ClientNum: ' 
     || TO_CHAR (rec.CLIENT_NUM) 
     || ' StartDT: ' 
     || TO_CHAR (rec.START_DATE) 
     || ' EndDT: ' 
     || TO_CHAR (rec.END_DATE)); 

     IF rec.RESCHEDULE_DATE IS NULL 
     THEN 
     BEGIN 
      CPS_OVERRIDE_UPDATE_SR_FACT (rec.CLIENT_NUM, 
             'N', 
             rec.START_DATE, 
             rec.END_DATE); 
     EXCEPTION 
      WHEN OTHERS 
      THEN 
       DBMS_OUTPUT.PUT_LINE (
        'Error:' || SQLCODE || ' Msg: ' || SQLERRM); 
       RAISE; 
     END; 

     SELECT COUNT (*) 
      INTO nWorkList 
      FROM CPS_CONTENT_MASTER 
      WHERE  CLIENT_NUM = rec.CLIENT_NUM 
       AND AGREEMENT_NUM = rec.AGREEMENT_NUM 
       AND START_DATE = rec.START_DATE 
       AND END_DATE = rec.END_DATE; 

     IF nWorkList = 0 
     THEN 
      INSERT INTO CPS_CONTENT_MASTER 
       VALUES (CPS_CONTENT_MASTER_SEQ.NEXTVAL, 
         rec.CLIENT_NUM, 
         rec.AGREEMENT_NUM, 
         rec.FREQUENCY, 
         rec.START_DATE, 
         rec.END_DATE, 
         'Inserting AUTHOR SAVE', 
         'AUTHOR SAVE', 
         SYSDATE, 
         'CPS proc', 
         rec.CONTENT_TYPE, 
         rec.LANG_ID); 
     ELSE 
      UPDATE CPS_CONTENT_MASTER 
       SET STATUS = 'AUTHOR SAVE' 
      WHERE  CLIENT_NUM = rec.CLIENT_NUM 
        AND AGREEMENT_NUM = rec.AGREEMENT_NUM 
        AND START_DATE = rec.START_DATE 
        AND END_DATE = rec.END_DATE; 
     END IF; 
     END IF; 

     IF rec.RESCHEDULE_DATE IS NOT NULL 
     THEN 
     BEGIN 
      SR_FACT_RESET (rec.CLIENT_NUM, 
          'Y', 
          rec.START_DATE, 
          rec.END_DATE); 
     EXCEPTION 
      WHEN OTHERS 
      THEN 
       DBMS_OUTPUT.PUT_LINE (
        'Error:' || SQLCODE || ' Msg: ' || SQLERRM); 

       RAISE; 
     END; 



     BEGIN 
      CPS_SR_DETAIL_NULL (rec.CLIENT_NUM, 
           NULL, 
           rec.START_DATE, 
           rec.END_DATE); 
     EXCEPTION 
      WHEN OTHERS 
      THEN 
       DBMS_OUTPUT.PUT_LINE (
        'Error:' || SQLCODE || ' Msg: ' || SQLERRM); 

       EXIT; 
     END; 



     SELECT COUNT (*) 
      INTO nWorkList 
      FROM CPS_CONTENT_MASTER 
      WHERE  CLIENT_NUM = rec.CLIENT_NUM 
       AND AGREEMENT_NUM = rec.AGREEMENT_NUM 
       AND START_DATE = rec.START_DATE 
       AND END_DATE = rec.END_DATE; 

     IF nWorkList = 0 
     THEN 
      INSERT INTO CPS_CONTENT_MASTER 
       VALUES (CPS_CONTENT_MASTER_SEQ.NEXTVAL, 
         rec.CLIENT_NUM, 
         rec.AGREEMENT_NUM, 
         rec.FREQUENCY, 
         rec.START_DATE, 
         rec.END_DATE, 
         'Inserting AUTHOR SAVE', 
         'AUTHOR SAVE', 
         SYSDATE, 
         'CPS proc', 
         rec.CONTENT_TYPE, 
         rec.LANG_ID); 
     ELSE 
      UPDATE CPS_CONTENT_MASTER 
       SET STATUS = 'AUTHOR SAVE' 
      WHERE  CLIENT_NUM = rec.CLIENT_NUM 
        AND AGREEMENT_NUM = rec.AGREEMENT_NUM 
        AND START_DATE = rec.START_DATE 
        AND END_DATE = rec.END_DATE; 
     END IF; 
     END IF; 

     -- ADDED TO PROCESS CMR REPORTS 

     BEGIN 
     DBMS_OUTPUT.PUT_LINE ('Now Executing LOAD_MONTH_REPORT ..'); 

     LOAD_MONTH_REPORT (rec.CLIENT_NUM, 
          rec.AGREEMENT_NUM, 
          rec.START_DATE, 
          rec.END_DATE); 

     DBMS_OUTPUT.PUT_LINE ('Now Executing LOAD_SR_AVAILABILITY_RPT ..'); 

     LOAD_SR_AVAILABILITY_RPT (rec.CLIENT_NUM, 
            rec.AGREEMENT_NUM, 
            rec.START_DATE, 
            rec.END_DATE); 

     DBMS_OUTPUT.PUT_LINE ('Now Executing LOAD_SR_CLOSE_RPT ..'); 

     LOAD_SR_CLOSE_RPT (rec.CLIENT_NUM, 
          rec.AGREEMENT_NUM, 
          rec.START_DATE, 
          rec.END_DATE); 

     DBMS_OUTPUT.PUT_LINE ('Now Executing LOAD_SR_RESPONSE_RPT ..'); 

     LOAD_SR_RESPONSE_RPT (rec.CLIENT_NUM, 
           rec.AGREEMENT_NUM, 
           rec.START_DATE, 
           rec.END_DATE); 
     EXCEPTION 
     WHEN OTHERS 
     THEN 
      RAISE; 
     END; 

     -- END 

     DBMS_OUTPUT.PUT_LINE (
     'Trying to UPDATE CPS_SCHEDULE_SETUP to COMPLETE ..'); 

     UPDATE CPS_SCHEDULE_SETUP 
     SET COMPLETE = 'Yes', COMPLETED_DATE = SYSDATE 
     WHERE SCHEDULE_ID = rec.SCHEDULE_ID; 



     DBMS_OUTPUT.PUT_LINE ('Trying to handle RECURRING cases ..'); 


     IF rec.RECURRING = 'Yes' 
     THEN 
     dNewStartDT := rec.END_DATE + 1; 

     IF rec.FREQUENCY = 'MONTHLY' 
     THEN 
      dNewEndDT := ADD_MONTHS (dNewStartDT, 1) - 1; 
     ELSIF rec.FREQUENCY = 'QUARTERLY' 
     THEN 
      dNewEndDT := ADD_MONTHS ((rec.END_DATE + 1), 3) - 1; 
     ELSIF rec.FREQUENCY = 'WEEKLY' 
     THEN 
      dNewEndDT := dNewStartDT + 6; 
     ELSE 
      dNewEndDT := NULL; 
     END IF; 


     DBMS_OUTPUT.PUT_LINE ('NEW StartDT:' || TO_CHAR (dNewStartDT)); 

     DBMS_OUTPUT.PUT_LINE ('NEW EndDT:' || TO_CHAR (dNewEndDT)); 

     SELECT COUNT (*) 
      INTO nSchedule 
      FROM CPS_SCHEDULE_SETUP 
      WHERE  CLIENT_NUM = rec.CLIENT_NUM 
       AND AGREEMENT_NUM = rec.AGREEMENT_NUM 
       AND START_DATE = dNewStartDT 
       AND END_DATE = dNewEndDT; 

     IF nSchedule > 0 
     THEN 
      NULL; 
     ELSE 
      INSERT INTO CPS_SCHEDULE_SETUP 
       VALUES (CPS_SCHEDULE_SETUP_SEQ.NEXTVAL, 
         rec.CLIENT_NUM, 
         rec.AGREEMENT_NUM, 
         dNewStartDT, 
         rec.FREQUENCY, 
         dNewEndDT, 
         rec.CONTENT_TYPE, 
         'Yes', 
         'No', 
         'Yes', 
         NULL, 
         NULL, 
         SYSDATE, 
         rec.LANG_ID); 
     END IF; 
     END IF; 

     COMMIT; 
    END LOOP; 
-- close cpsSCHEDULErecords; 

EXCEPTION 
    WHEN OTHERS 
    THEN 
     ROLLBACK; 

     DBMS_OUTPUT.PUT_LINE (
     'Error during CPS_SCHEDULE_SETUP_PROCESS execution ..'); 

     DBMS_OUTPUT.PUT_LINE (
     'Error Code:' || SQLCODE || ' Error Msg:' || SQLERRM); 
END; 
+0

我已經爲該過程創建了同義詞,因爲它在另一個架構中 – Archana

+0

請更新您的問題以添加評論。 –

+0

添加一些說明並正確格式化。 –

回答

1

ORA-06550錯誤是一個通用的PL/SQL編譯錯誤。錯誤指向發生語法錯誤的PL/SQL中的位置。請檢查您的代碼中的所有objects是否爲valid並嘗試recompile的代碼。從你的錯誤我可以看到對象DMQ1STG.CPS_SCHEDULE_SETUP_PROCESS是無效的。

+0

@XING ...感謝您的寶貴意見..我創建了對象cps_schedule_setup_process的同義詞..現在錯誤不會來...但不同的錯誤 – Archana

+0

23/34 PL/SQL:語句被忽略 23/34 PLS-00905 :對象DMQ1STG.CPS_OVERRIDE_UPDATE_SR_FACT無效 34分之62PL/SQL:語句忽略 三十四分之六十二PLS-00905:對象DMQ1STG.SR_FACT_RESET無效 二十五分之一百○八PL/SQL:語句忽略 25分之108PLS-00201:標識符'LOAD_MONTH_REPORT' 必須聲明爲 二十五分之一百零八PLS-00352:無法訪問另一個數據庫 'DATAMART.CORIO.COM' 110/25 PL/SQL:語句被忽略 110/25 PLS-00201:標識符 'LOAD_SR_AVAILABILITY_RPT' 必須是宣稱 ' – Archana

+0

110/25 PLS-00352:無法訪問另一個數據庫'DATAMART.CORIO.COM' 112/25 PL/SQL:語句被忽略 112/25 PLS-00201:標識符'LOAD_SR_CLOSE_RPT'必須聲明 112/25 PLS- 00352:無法訪問另一個數據庫'DATAMART.CORIO.COM' 114/25 PL/SQL:語句被忽略 114/25 PLS-00201:必須聲明標識符'LOAD_SR_RESPONSE_RPT' 114/25 PLS-00352:無法訪問另一個數據庫'DATAMART.CORIO.COM' – Archana

相關問題