【问题标题】:object creation generates error in oracle对象创建在 oracle 中产生错误
【发布时间】:2016-04-13 07:58:13
【问题描述】:

我有这段代码,当我尝试编译它时,它给了我一个错误,说“名称已被现有对象使用”。但我没有另一个同名的对象。

drop type specii_inr;
    CREATE OR REPLACE TYPE specii_inr UNDER gestiune_zoo
    (specii_inrudite VARCHAR2(20),
     OVERRIDING member procedure afiseaza_animal)
    /
    CREATE OR REPLACE PROCEDURE specii_inr AS
     OVERRIDING MEMBER PROCEDURE afiseaza_animal IS
     BEGIN
       dbms_output.put_line('Animale inrudite: '||specii_inrudite);
     END afiseaza_animal;
    END;
    /

【问题讨论】:

  • CREATE OR REPLACE PROCEDURE specii_inr 应该是CREATE OR REPLACE TYPE body specii_inr

标签: oracle plsql oracle11g


【解决方案1】:

您的过程与您的类型具有相同的名称,因此当您尝试创建它时,您会得到“名称已被现有对象错误使用”。

尝试为您的程序使用不同的名称,例如specii_inr_proc

【讨论】:

    【解决方案2】:

    afiseaza_animal 过程属于类型,您需要在类型的主体中定义它(使用CREATE TYPE BODY)并且不是作为独立过程(使用CREATE PROCEDURE)。

    DROP TYPE specii_inr;
    
    CREATE TYPE specii_inr UNDER gestiune_zoo (
      specii_inrudite VARCHAR2(20),
      OVERRIDING member procedure afiseaza_animal
    );
    /
    
    CREATE OR REPLACE TYPE BODY specii_inr AS
      OVERRIDING MEMBER PROCEDURE afiseaza_animal IS
      BEGIN
        dbms_output.put_line('Animale inrudite: '||specii_inrudite);
      END afiseaza_animal;
    END;
    /
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-21
      • 2011-03-01
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      相关资源
      最近更新 更多