ORA-21700: 对象不存在或被标记为删除

Posted

技术标签:

【中文标题】ORA-21700: 对象不存在或被标记为删除【英文标题】:ORA-21700: object does not exist or is marked for delete 【发布时间】:2015-07-23 14:18:43 【问题描述】:

我有包含 Period 和 TableOfPeriod 类型的包:

  TYPE Period
  IS RECORD
  (   StartPeriod  Date,
      EndPeriod    Date
  );

  TYPE TableOfPeriod
  IS TABLE OF Period;

在这个包中我有三个简单的功能:

  FUNCTION Temp1
  RETURN TableOfPeriod IS
    returnedValue TableOfPeriod := TableOfPeriod();
  BEGIN
    returnedValue.extend(1);
    returnedValue(1).StartPeriod := sysdate-100;
    returnedValue(1).EndPeriod := sysdate;
    RETURN returnedValue;
  END Temp1;

FUNCTION CalculateFine
  return VARCHAR2
  IS
  freewillLockTableRP         TableOfPeriod:=TableOfPeriod();
  compulsoryLockTableRP       TableOfPeriod:=TableOfPeriod();

  BEGIN

  --for testing
      compulsoryLockTableRP:=Temp1();
      FOR i IN compulsoryLockTableRP.FIRST..compulsoryLockTableRP.LAST LOOP
        IF(((compulsoryLockTableRP(i).EndPeriod - compulsoryLockTableRP(i).StartPeriod)>1)) THEN
            BEGIN
--              RAISE_APPLICATION_ERROR(-20001, 'Hello world');
              SELECT T111.StartPeriod StartPeriod,
                     T111.EndPeriod   EndPeriod
                    bulk collect into freewillLockTableFull
              FROM TABLE(DistributeDaysByPeriods(compulsoryLockTableRP, 5)) T111;
          END;
        END IF;
      END LOOP;
      /*SELECT T111.StartPeriod StartPeriod,
             T111.EndPeriod   EndPeriod
--          BULK COLLECT INTO compulsoryLockTableRP
            bulk collect into freewillLockTableFull
      FROM TABLE(DistributeDaysByPeriods(compulsoryLockTableRP, 5)) T111;*/
  --===========

  --SOME OTHER PROCESSING


  RETURN 'Ok ' 
         ||  '#r';




  EXCEPTION
    WHEN No_Data_Found THEN return 'No data found#g';
--    WHEN OTHERS THEN RETURN SQLERRM;

  END CalculateFine;

当我执行这个函数时,我有下一个错误:

" ORA-06512: 在“MyPackageName”,第 1181 行 ORA-06512:在第 1 行 21700. 00000 - “对象不存在或被标记为删除””

其中1181行是带有CalculateFine函数的Select语句的行。谁能告诉我,出了什么问题以及我该如何解决这个问题?

【问题讨论】:

Querying a Nested Table 的可能重复项 【参考方案1】:

检查你的包所在的同一个文件夹中是否有一个同名但扩展名为 *.~sql 的文件(例如:your_file_name.~sql)。我遇到了同样的错误,但在删除 *.~sql 文件后,我可以编译我的包而不会出现 ORA 错误。

【讨论】:

关于运行时错误而不是编译的问题

以上是关于ORA-21700: 对象不存在或被标记为删除的主要内容,如果未能解决你的问题,请参考以下文章

在oracle11g中删除sde用户报ora - 21700错误的解决方法

错误1075:依存服务不存在,或已标记为删除

标记没有出现或被行覆盖

写入Excel文件时文件名或路径不存在或被其他程序使用[重复]

qt语音您的号码因存在不符合互联网相关安全规范的行为或被多名用户举

学习记录006-文件删除原理和相关知识点