Oracle常见异常以及解决方案

ORA-01810:格式代码出现两次

原始sql脚本:

select t.*,t.rowid from ucr_ac1.am_deposit_busi t where t.trade_date >= to_date('20190612', 'yyyy-MM-dd hh24:mm:ss');

修改后sql脚本:

select t.*,t.rowid from ucr_ac1.am_deposit_busi t where t.trade_date >= to_date('20190612', 'YYYY-MM-DD HH24:Mi:SS');

出现异常的原因:因为Oracle数据库中书写sql脚本的过程中是不区分字母大小写,最后格式化日期hh24:mm:ss时讲mm(分钟)解析成MM(月份)了。

ORA-01722: 无效数字

报错原因:查询字段值的类型是char、varchar或者varchar2,sql脚本传入的是一个number类型的值。

解决方案:把number类型的值变成char类型的值。

注:个人理解,预编译就是在占位解析的时候,把解析的字段进行类型转换。比如传入一个条件1=1 这样的条件,预编译之后,拼接sql的时候,就会在条件上加上引号,使之变成’1=1‘,防止sql注入。

ORA-01410: 无效的 ROWID

Oracle 中rowid的用法参考下面的链接

转载链接:https://www.cnblogs.com/autumnlj/p/5814852.html

引起 【ORA-01410: 无效的 ROWID的】原因:根据rowid去更新数据的时候找不到rowid对应的记录。

解决方案:确定rowid是哪个表中伪列地址,更新的时候带上指定的表名。

ORA-00942:表或视图不存在

报错原因:当前用户下没有要操作的表或视图。

解决办法:在当前用户下新建表或视图,或者切换到对应的数据库用户下。

ORA-00911: 无效字符

报错原因:查询时传入一个非字符值,比如:?、$等

解决方案:传入非特殊字符的数字或字符串。

ORA-00936: 缺失表达式

报错原因:查询条件没写完整。

解决方案:查询条件补充完整即可。

ORA-01840: 输入值对于日期格式不够长

报错原因:查询条件日期格式为:yyyy-MM-dd,sql中传入的变量格式是yyyy-MM,少了日期dd。

解决方案:查询条件补充完整的日期格式。

ORA-01861: 文字与格式字符串不匹配

报错原因:Oracle的日期时间类型,查询的字段类型和实际传入的类型不一致。

解决方案:数据库表字段类型和查询条件一致。

1.TO_CHAR(UPDATE_DATE,'yyyy-mm-dd hh24:mi:ss')='2020-01-01 00:00:00';

2.TO_NUMBER(UPDATE_DATE,'yyyy-mm-dd hh24:mi:ss')='2020-01-01 00:00:00';

3.UPDATE_DATE=TO_DATE('2020-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss');

注意:TO_CHAR和TO_NUMBER的时候,等号两边不要出现空格。

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页