【问题标题】:Error: ORA-00955: name is already used by an existing object in Oracle Function错误:ORA-00955:名称已被 Oracle 函数中的现有对象使用
【发布时间】:2015-08-22 16:30:25
【问题描述】:

我有一个函数,我正在尝试编译并得到一个错误为Error: ORA-00955: name is already used by an existing object。我真的不知道这个错误并尝试搜索这个问题但没有找到任何解决方案。我不知道这是否与任何授予权限有关,但我的架构表没有权限问题。

create or replace FUNCTION "AK_CHECK" 
-- PUBLIC
(ID Number) RETURN Number
IS
  TYPE_ID Number := 0;
  SUCCESS Number := 0;
  S Number := 0;
BEGIN
  SELECT ACTIVE(ID) + MANUAL(ID) INTO S FROM DUAL;
  CASE S
  WHEN 2 THEN
   SELECT TYPE INTO TYPE_ID
   FROM SALE_SUPPLY KD
   WHERE KD.KPI_DEF_ID = ID;    
  END CASE;
END AK_CHECK;

【问题讨论】:

  • 你正在使用create and replace,所以如果该函数已经存在,那么它将被替换。因此,还有其他原因导致问题,而不是函数名称。在SQL*Plus 中编译,并使用SHOW ERRORS,它会显示准确的行号和引发错误的对象。编辑您的问题并添加复制粘贴完整的错误堆栈。

标签: sql oracle function privileges grant


【解决方案1】:

您可能还有另一个同名对象 (PERFORM_CHECK)。

你可以通过查询user_objects找到它:

select *
from   user_objects
where  object_name = 'PERFORM_CHECK'

然后将其删除(将TYPE_OF_OBJECT 替换为上述查询中的对象类型):

 drop TYPE_OF_OBJECT perform_check

【讨论】:

  • OP 正在使用create or replace 的功能。如果它已经存在,则该函数将被替换。还有其他原因导致此问题。
  • @LalitKumarB:如果有一个具有该确切名称的表怎么办?它将因此错误而失败。
  • @Rahul:需要更多帮助吗?
  • 你好帕特里克我什么都试过了。我也尝试放弃,但我得到了同样的错误:(
  • 查询的结果是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多