我正在编写一个存储过程,将数据从一个用户的表复制到另一个架构中。基本上,这是一系列INSERT .. SELECT语句,例如:
INSERT INTO GESCHAEFTE
SELECT *
FROM TURAT03.GESCHAEFTE
WHERE kong_nr = 1234;
这在使用sqlplus(或对我来说是TOAD ;-))发出命令时运行良好,因此我知道我具有足够的权限,但当它作为存储过程的一部分时,就像这样:
CREATE OR REPLACE FUNCTION COPY_KONG
(pKongNr IN NUMBER)
RETURN NUMBER
AUTHID CURRENT_USER
IS
BEGIN
INSERT INTO GESCHAEFTE
SELECT *
FROM TURAT03.GESCHAEFTE
WHERE kong_nr = pKongNr;
END;
我遇到了一个Oracle错误:
[Error] ORA-00942 (11: 22): PL/SQL: ORA-00942: table or view does not exist
从这里可以看出,我已经插入了一个AUTHID
,但好像没有效果。
还能做什么呢?我已经想到了所有的办法。