2017-10-19 480 views
-2

我嘗試創建包:錯誤:ORA-00955:名稱已由現有對象使用。然後,我創建包

CREATE OR REPLACE PACKAGE CARS AS 
    TYPE REFCURSOR IS REF CURSOR; 
    TYPE car_arr IS TABLE OF my_cars%ROWTYPE; 
    PROCEDURE getAllCars(cars OUT REFCURSOR); 
    FUNCTION getCarById(id IN VARCHAR2) RETURN REFCURSOR; 
END CARS; 

我得到:錯誤:ORA-00955:名稱已經由現有的對象。

如何解決?

+1

檢查名爲'CARS'的對象是否存在於當前用戶模式中:SELECT owner,object_name,object_type FROM all_objects WHERE object_name ='CARS'; –

+1

錯誤信息很清楚 – GurV

+0

@ Mighty.Moogle所有者:我的用戶,OBJECT_NAME:CARS –

回答

1

對象名稱在模式中是唯一的。如果我們有一個名爲"CARS"的表,我們也不能有一個名爲"CARS"的包。

Error: ORA-00955: name is already used by an existing object.

所以很明顯你已經創建了一個名爲"CARS"的對象。如果你忘記了,對象是什麼,運行

select * from user_objects 
where object_name = 'CARS'; 

object_type欄會告訴你什麼樣的對象,你已經與該名有。您有三種選擇:

  1. 給包一個不同的名稱
  2. 下降現有對象
  3. 命名現有對象

的第一選擇似乎更容易,但情況因人而異。

相關問題