【问题标题】:object outer does not exist外部对象不存在
【发布时间】:2018-10-11 06:29:26
【问题描述】:

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

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;
  /

【问题讨论】:

  • 是的,它也运行并创建新表,但是当我输入程序时,它给出了上述错误
  • 不,不涉及视图
  • 我终于解决了
  • l´学习 quoting string literal - 非常适合这些情况:q'[SELECT COUNT(*) FROM user_objects WHERE object_type = 'TABLE']

标签: oracle stored-procedures plsql dynamic-sql


【解决方案1】:

解决了!!!

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

AUTHID CURRENT_USER is

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2015-08-29
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多