外部对象不存在
object outer does not exist
我一直在尝试执行此过程,但出现此错误,我不知道是什么原因造成的。已经 2 天了,我仍然陷在其中。基本上,该过程应该 运行 查询并将结果存储在新的 table 中。以下是我收到的错误。
ORA-06564: object OUTER does not exist
ORA-06512: at "HR.RPG", line 17
ORA-06512: at line 1
这是我的程序代码:
create or replace procedure "rpg"
is
v_full_name VARCHAR2(500);
sal varchar(200);
jobid varchar(100);
cpct varchar(50);
mgid varchar(25);
did varchar(20);
cid varchar(20);
rid varchar(20);
lid varchar(20);
Begin
execute immediate 'create table resquery as
(
select HR.EMPLOYEES.FIRST_NAME||'' ''||HR.EMPLOYEES.LAST_NAME AS
Full_Name,HR.EMPLOYEES.SALARY as sal,HR.EMPLOYEES.JOB_ID as ji,
HR.EMPLOYEES.COMMISSION_PCT as cmpct,HR.EMPLOYEES.MANAGER_ID as
mgid,HR.EMPLOYEES.DEPARTMENT_ID as dep,HR.COUNTRIES_EXTERNAL.COUNTRY_ID as
country,HR.DW_REGION.R_ID as region,
HR.LOCATIONS.LOCATION_ID as loc
from HR.EMPLOYEES
join HR.DEPARTMENTS ON
HR.EMPLOYEES.DEPARTMENT_ID=HR.DEPARTMENTS.DEPARTMENT_ID
join HR.LOCATIONS ON HR.DEPARTMENTS.LOCATION_ID=HR.LOCATIONS.LOCATION_ID
join HR.COUNTRIES_EXTERNAL ON HR.LOCATIONS.COUNTRY_ID=HR.COUNTRIES_EXTERNAL.COUNTRY_ID
join HR.DW_REGION ON HR.COUNTRIES_EXTERNAL.REGION_ID=HR.DW_REGION.R_ID
where HR.COUNTRIES_EXTERNAL.COUNTRY_ID=''US''
AND trunc(HR.EMPLOYEES.HIRE_DATE) BETWEEN TO_DATE(''16/08/2002'',''DD/MM/YYYY'') AND
TO_DATE(''07/12/2007'',''DD/MM/YYYY''))';
end;
/
已解决!!!
实际上,我在使用 SYSTEM 模式登录时创建了一个 OUTER 目录,并在那里创建了一个外部 table。现在我以 HR 模式登录,并在查询 hr 模式时使用外部 table 和外部目录,因为该目录位于 SYSTEM 模式中,所以无法找到该目录。
所以我更改了我当前过程查询中的外部 table 引用,它完成了这项工作,我还必须授予执行该过程的权限。
AUTHID CURRENT_USER is
我一直在尝试执行此过程,但出现此错误,我不知道是什么原因造成的。已经 2 天了,我仍然陷在其中。基本上,该过程应该 运行 查询并将结果存储在新的 table 中。以下是我收到的错误。
ORA-06564: object OUTER does not exist ORA-06512: at "HR.RPG", line 17 ORA-06512: at line 1
这是我的程序代码:
create or replace procedure "rpg"
is
v_full_name VARCHAR2(500);
sal varchar(200);
jobid varchar(100);
cpct varchar(50);
mgid varchar(25);
did varchar(20);
cid varchar(20);
rid varchar(20);
lid varchar(20);
Begin
execute immediate 'create table resquery as
(
select HR.EMPLOYEES.FIRST_NAME||'' ''||HR.EMPLOYEES.LAST_NAME AS
Full_Name,HR.EMPLOYEES.SALARY as sal,HR.EMPLOYEES.JOB_ID as ji,
HR.EMPLOYEES.COMMISSION_PCT as cmpct,HR.EMPLOYEES.MANAGER_ID as
mgid,HR.EMPLOYEES.DEPARTMENT_ID as dep,HR.COUNTRIES_EXTERNAL.COUNTRY_ID as
country,HR.DW_REGION.R_ID as region,
HR.LOCATIONS.LOCATION_ID as loc
from HR.EMPLOYEES
join HR.DEPARTMENTS ON
HR.EMPLOYEES.DEPARTMENT_ID=HR.DEPARTMENTS.DEPARTMENT_ID
join HR.LOCATIONS ON HR.DEPARTMENTS.LOCATION_ID=HR.LOCATIONS.LOCATION_ID
join HR.COUNTRIES_EXTERNAL ON HR.LOCATIONS.COUNTRY_ID=HR.COUNTRIES_EXTERNAL.COUNTRY_ID
join HR.DW_REGION ON HR.COUNTRIES_EXTERNAL.REGION_ID=HR.DW_REGION.R_ID
where HR.COUNTRIES_EXTERNAL.COUNTRY_ID=''US''
AND trunc(HR.EMPLOYEES.HIRE_DATE) BETWEEN TO_DATE(''16/08/2002'',''DD/MM/YYYY'') AND
TO_DATE(''07/12/2007'',''DD/MM/YYYY''))';
end;
/
已解决!!!
实际上,我在使用 SYSTEM 模式登录时创建了一个 OUTER 目录,并在那里创建了一个外部 table。现在我以 HR 模式登录,并在查询 hr 模式时使用外部 table 和外部目录,因为该目录位于 SYSTEM 模式中,所以无法找到该目录。 所以我更改了我当前过程查询中的外部 table 引用,它完成了这项工作,我还必须授予执行该过程的权限。
AUTHID CURRENT_USER is