当前位置: 代码迷 >> Oracle开发 >> ORA-01401: 插入的值对于列过大
  详细解决方案

ORA-01401: 插入的值对于列过大

热度:82   发布时间:2016-04-24 07:36:31.0
PL/SQL 创建包体时说“插入的值对于列过大”
用scott/tiger登录,创建包和包体,代码如下:

Create Or Replace Package test Is
  function f() return number;
End test;

create or replace package body test is
  function f() return number
  is
  begin
  return -1;
  end;
end test;


包头创建成功,但是在创建包体时,出现如下错误:
ORA-00604: 递归SQL层1出现错误
ORA-01401: 插入的值对于列过大
ORA-06512: 在line 2




------解决方案--------------------

------解决方案--------------------

------解决方案--------------------
SQL code
--没有参数的话,去掉括号:Create Or Replace Package test Is     function f return number; End test; create or replace package body test is     function f return number     is     begin         return -1;     end; end test;
------解决方案--------------------

------解决方案--------------------
也有可能LZ删除了递归SQL层(链)上有用的东西。


探讨
我的版本是9i

函数不加括号的事我已经试过了,还是报一样的错误。把以前写过并且编译通过的创建包的脚本拿来运行也报一样的错误。

但是我用 system/manager 登录时一切都是正常的

并且我记得前几天还是可以的,只不过昨天删除了一些表和相关的过程、函数什么的,会不会是这些删除操作时不小心把不该删除的东西给删掉了?

------解决方案--------------------
如果以前有备份的话,如*.dmp,可以在另一台机中装入Oracle,使用imp导入恢复,仔细比较一下,看能否找出你要的Object。