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

错误(11,15):PL/SQL:ORA-04044:此处不允许使用过程、函数、包或类型,sql,oracle,select,insert,ora-04044,Sql,Oracle,Select,Insert,Ora 04044,我试图从4个表中获取数据—事实、产品、客户、日期—进入客户分配表, 当我刚刚运行select查询时,我得到了结果,但是当我将其放入一个过程中并使用select语句执行insert into时,我得到了一个错误“error(11,15):PL/SQL:ORA-04044:这里不允许使用过程、函数、包或类型” 有人能帮忙解释一下为什么会这样吗 谢谢大家! INSERT INTO CUST_ALLOC (PART_ID, CUSTOMER, MONTH, QTY_A

我试图从4个表中获取数据—事实、产品、客户、日期—进入客户分配表, 当我刚刚运行select查询时,我得到了结果,但是当我将其放入一个过程中并使用select语句执行insert into时,我得到了一个错误“error(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;

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

INNER JOIN "DATE" ON X.DATE_NUM="DATE".DATE_NUM

是否可以发布整个过程?我的第一个怀疑是
MEASURE\u NUM
-它是这些表中的一列吗?我会在上面加上一个别名。如果这个过程被称为“P”,您可能会与产品的别名发生命名冲突。我也很担心有一张叫DATE的桌子。