错误(11,15):PL / SQL:ORA-04044:此处不允许使用过程,函数,程序包或类型

use*_*354 5 sql oracle select insert ora-04044

我试图从4个表FACTS_CDPM,PRODUCT,CUSTOMER,DATE中获取数据到CUST_ALLOC表中,当我只运行select查询时,我得到了结果,但是当我将其放在过程中并用select语句插入时如下所示,我收到错误消息“错误(11,15):PL / SQL:ORA-04044:此处不允许使用过程,函数,程序包或类型”

请问有人可以帮忙为什么会这样吗?

谢谢!

INSERT INTO CUST_ALLOC
(PART_ID,
      CUSTOMER,
      MONTH,
      QTY_ALLOCATED
        )    
    SELECT P.PROD_ID,
       C.PURCHASING,
       D.MONTH_ID,
       SUM(X.QTY)
FROM FACTS_CDPM X INNER JOIN PRODUCT P ON P.PROD_NUM=X.PROD_NUM 
                    INNER JOIN CUSTOMER C ON X.CUST_NUM=C.CUST_NUM 
                    INNER JOIN DATE D ON X.DATE_NUM=D.DATE_NUM
WHERE MEASURE_NUM=18
GROUP BY P.PROD_ID,C.PURCHASING,D.MONTH_ID;
Run Code Online (Sandbox Code Playgroud)

vls*_*vls 5

DATE是Oracle中的保留关键字。如果您的过程包含您发布的插入语句,则它甚至不应该编译。如果要使用 DATE 作为表名,请将其放在引号中:

INNER JOIN "DATE" ON X.DATE_NUM="DATE".DATE_NUM
Run Code Online (Sandbox Code Playgroud)