我有以下不编译的小函数:
function f_query_01 Return interval Day to second is
start_time timestamp(3);
end_time timestamp(3);
time_diff interval Day to second;
c_query_number number;
begin
start_time := systimestamp;
select count(*) into c_query_number from wg; <--This is the line that errors out
end_time := systimestamp;
time_diff := start_time - end_time;
return time_diff;
end f_query_01;
Run Code Online (Sandbox Code Playgroud)
编译器给我以下错误:
Error(29,3): PL/SQL: SQL Statement ignored
Error(29,44): PL/SQL: ORA-04044: procedure, function, package, or type is not allowed here
Run Code Online (Sandbox Code Playgroud)
导致此错误的原因是什么?如何解决?
我试图从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)