对象创建在 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 中产生错误的主要内容,如果未能解决你的问题,请参考以下文章