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的时候,等号两边不要出现空格。