对象创建在 oracle 中产生错误

Posted

技术标签:

【中文标题】对象创建在 oracle 中产生错误【英文标题】:object creation generates error in 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 【参考方案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;
/

【讨论】:

以上是关于对象创建在 oracle 中产生错误的主要内容,如果未能解决你的问题,请参考以下文章

原型模式

如何在sql中产生随机的十六进制颜色?

使用 SQL 创建查询哪个网格位置在商店中产生最多收入

java02

复用类@1

Java编程思想(七复用类)