2017-10-19 245 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. 命名现有对象

的第一选择似乎更容易,但情况因人而异。

相关问题