公司的oracle,在遇到这种错误的时候,是没有报出是哪一列过大的。但是我在用户现场,却看到他们的数据库可以报出是哪一列过大。请问高手们,是数据库版本问题还是数据库的配置问题,谢谢!告诉我是哪个版本或者如何配置,谢谢!
解决方案 »
- 请问 如何用SP/SQL 写杨辉三角谢谢
- 求oracle 过程,大数据量处理方法
- 在ORACLE 11 G中这样的需求是做视图呢还是有其它更好的解决方法?
- 见到论坛上这么多人说[马甲马甲],[马甲]是什么意思啊?
- 一个表如何主键关联自己表的外键 关于自连接的
- vb 调用 oracle 使用 order 函数后,删除某一记录显示无法定位
- DATAGUARD是技术还是一套软件产品
- ORA-01722: 无效数字
- SQL语句求number(10,2)列的和,在线等!!!
- 请问怎么讲sql存储过程改成oracle的啊?我是一点不会oracle
- ORACLE 10g CPU占用率100%
- 仔细一个查询命令
scott@RACDB> desc t;
名称 是否为空? 类型
----------------------------------------------------------------------------------------- -------- ----------------------------
ID NUMBER(18)
RANDOMSTR VARCHAR2(20)
CDATE DATEscott@RACDB> insert into t(id,randomstr,cdate) values(0,'ldjoeieeieiieieioeifjeofjepofjeo',sysdate);
insert into t(id,randomstr,cdate) values(0,'ldjoeieeieiieieioeifjeofjepofjeo',sysdate)
*
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."T"."RANDOMSTR" 的值太大 (实际值: 32, 最大值: 20)
不行啊,大哥
SQL> SQL> insert into b(a,b,c) values('1','ldjoeieeieiieieioeifjeofjepofjeo','3');
insert into b(a,b,c) values('1','ldjoeieeieiieieioeifjeofjepofjeo','3')
ORA-01401: inserted value too large for column
这个只是在第二列下面有下划线我是用存储过程插入的,而且为什么我这里的错误号和你的还不一样的
sys@RACDB> select * from v$version where rownum<3;BANNER
----------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
PL/SQL Release 9.2.0.8.0 - Production
不会是版本问题吧?
insert into b(a,b,c) values('1','ldjoeieeieiieieioeifjeofjepofjeo','3');
insert into b(a,b,c) values('1','ldjoeieeieiieieioeifjeofjepofjeo','3')
ORA-12899: 列 "PCS_GXZFBA"."B"."B" 的值太大 (实际值: 32, 最大值: 30)
难道是因为9i不支持这样的报错吗?
-- 其中:GDJZ3Q_DZF应该是你的数据库用户名,S_B_DZF_BMDXQZXP应该是存储过程的名字,
-- 错误位置位于这个存储过程的第52行!--所以:你可以用下面的语句:
set long 50000;select dbms_metadata.get_ddl('PROCEDURE','S_B_DZF_BMDXQZXP','GDJZ3Q_DZF') from dual;-- 根据上面语句的结果去查看其第52行代码是什么!
--再去进行分析!
select * from user_source
where name='S_B_DZF_BMDXQZXP' and line=52;
存储过程我是知道是那个,那一行我也知道是怎么样的,那一行就是一条insert语句,找到那条语句也不知道是哪一列过大啊。我本来的意思就是这个。因为我们的应用都是调用存储过程插入的,每次遇到这样的错误,要找到哪个字段,都要一个一个来试,这样很费劲。有一次我去现场,发现用户那里的报错信息是可以知道是哪个字段的,所以我感觉很奇怪,为什么我们公司的就没有直接报出字段来?所以我有点怀疑是数据库版本问题,因为现场用户好像是用的10G,而我们公司一直用9i的。
单独的insert 语句 就会报出哪个列