外部对象不存在

时间:2018-10-11 06:29:26

标签: oracle stored-procedures plsql dynamic-sql

我一直在尝试执行此过程,但是它给出了此错误,我不知道是什么原因引起的。已经两天了,我仍然陷在其中。基本上,该过程应运行查询并将结果存储在新表中。以下是我遇到的错误。

  

ORA-06564:对象OUTER不存在   ORA-06512:在“ HR.RPG”第17行   ORA-06512:在第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;
  /

1 个答案:

答案 0 :(得分:0)

解决了!

实际上,当我使用SYSTEM模式登录时,我创建了一个OUTER目录,并在那里创建了一个外部表。现在,我以HR模式登录,并在hr模式的查询中使用带有外部目录的外部表,由于该目录位于SYSTEM模式中,因此无法找到。 因此,我在执行此操作的当前过程查询中更改了外部表引用,并且还必须授予执行该过程的特权。

AUTHID CURRENT_USER is
相关问题