oracle - Oracle 10g 程序编译错误
问题描述
编译此函数时收到以下错误:
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
解决方案
嗨,我相信您在执行 DML 语句时需要在 PLSQL BLOCK 上使用 EXECUTE IMMEDIATE。
尝试这个:
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;
推荐阅读
- python - 在 Flask 中构建 RESTful API 时出错
- javascript - 从 HTTP 引用 URL 中提取字段/属性
- typescript - Typescript lodash Groupby 嵌套数组
- php - 尝试分配非对象的属性
- c# - Xamarin 将 ItemSource 中的数据绑定到标签文本
- javascript - 如何合并对象数组中的对象?
- django - 如何在 Django Rest 中为谷歌云存储中的文件生成签名 URL?
- java - 用于具有不同依赖项的实现的 Spring 工厂 bean
- python - Django Rest Framework,如何删除 rest_auth 身份验证中的电子邮件字段?
- javascript - 如何使用 python 或 javascript 查找网站的加载时间