首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

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

2012-02-04 
PL/SQL 创建包体时说“插入的值对于列过大”用scott/tiger登录,创建包和包体,代码如下:Create Or Replace Pa

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。

热点排行