Ошибки компиляции в процедуре Oracle 10g - PullRequest
0 голосов
/ 05 марта 2019

Я получаю следующую ошибку при компиляции этой функции:

Ошибки компиляции для PROCEDURE HAR.REPORT_INCOME_PROC PLS-00103: Обнаружен символ "" при ожидании одного из следующих действий

Я пытаюсь за это погуглить, но не могу ошибиться ...

CREATE OR REPLACE PROCEDURE REPORT_INCOME_PROC IS

BEGIN
  DELETE FROM HAR.REPORT_INCOME;
  INSERT INTO HAR.REPORT_INCOME RI
    (RI.INCOME,
     RI.AREA,
     RI.INCOME_TYPE,
     RI.DATA_DATE,
     RI.CREATE_DATE,
     RI.UPDATE_DATE)
    SELECT SUM(YD.HJJE) DRSR, 
           MDYS.JYDQ SYB, 
           1,
           TRUNC(YD.KDSJ) RQ, 
           (select sysdate from dual) XZSJ,
           (select sysdate from dual) XGSJ
      FROM HYDATA.LD_YD YD 
      LEFT JOIN HYDATA.LD_KHXX KHXX
        ON YD.TYRBH = KHXX.KHBH 
      LEFT JOIN HYDATA.LD_GS GS 
        ON YD.QYDZBH = GS.GSBH 
      LEFT JOIN HAR.REPORT_JY_MDYS MDYS 
        ON YD.QYDZBH = MDYS.GSBH 
     WHERE YD.KDSJ >= TRUNC(ADD_MONTHS(SYSDATE, -12), 'yy')
       AND (YD.YDZT != 5) 
       AND (YD.CYRQZ != '20000000000000000001' OR YD.CYRQZ IS NULL) 
       AND (KHXX.KHLB != 4 OR KHXX.KHLB IS NULL)
       AND (GS.GSJC NOT LIKE '%F%' OR GS.GSJC IS NULL) 
     GROUP BY TRUNC(YD.KDSJ), MDYS.JYDQ
     ORDER BY MDYS.JYDQ ASC, TRUNC(YD.KDSJ) DESC; 
COMMIT;
END;

Вот ошибка

Error: PLS-00103: Encountered the symbol "" when expecting one of the
following:
          begin function package pragma procedure subtype type use
          <an identifier> <a double-quoted delimited-identifier> form
          current cursor external language Line: 1

1 Ответ

0 голосов
/ 06 марта 2019

Привет. Я полагаю, что вам нужно использовать EXECUTE IMMEDIATE для PLSQL BLOCK при выполнении операторов DML.

попробуйте это:

CREATE OR REPLACE PROCEDURE REPORT_INCOME_PROC IS

BEGIN

  EXECUTE IMMEDIATE 'DELETE FROM HAR.REPORT_INCOME';
  EXECUTE IMMEDIATE 'INSERT INTO HAR.REPORT_INCOME RI <the rest of your codes>';

END;
...