2016-04-13 36 views
-5

我有這段代碼,當我嘗試編譯它時,它給了我一個錯誤,指出「名稱已被現有對象使用」。但是我沒有這個名字的另一個對象。對象創建在oracle中生成錯誤

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

'CREATE OR REPLACE PROCEDURE specii_inr' should be'CREATE OR REPLACE TYPE body specii_inr' –

回答

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

您的過程與您的類型具有相同的名稱,因此當您嘗試創建它時,會出現「名稱已被現有對象錯誤使用」。

嘗試爲您的過程使用不同的名稱,例如specii_inr_proc