在oracle sql 命令窗口中出现ORA-01858: 在要求输入数字处找到非数字字符什么意思啊?

在oracle sql 命令窗口中出现ORA-01858: 在要求输入数字处找到非数字字符
ORA-06512: 在 "SER_SHH.B", line 7
ORA-06512: 在 line 2什么意思啊?
这是过程,create or replace procedure B is
begin
for d in (select a.zjcx,a.jxdm,a.jxmc,a.zkrq,a.zkrs,b.kskm,b.kddm,c.pxcx,c.pxcsl,count(a.zjcx)
from shh_jxksap a,SHH_JXKDGXB b,shh_jxpxchz c
where a.jxdm=b.jxdm and b.jxdm =c.jxdm and a.zkrq>to_date('20150601','yyyymmdd')
group by a.zjcx,a.jxdm,a.jxmc,a.zkrq,a.zkrs,b.kskm,b.kddm,c.pxcx,c.pxcsl order by a.zkrs desc) loop
insert into zja_C(zjcx,jxdm,jxmc,zkrq,zkrs,kskm,kddm,pxcx,pxcsl) values
(d.zjcx,d.jxdm,d.jxmc,d.pxcx,d.pxcsl,d.kskm,d.zkrq,d.zkrs,d.kddm);
end loop;
commit;
end;
求详解,谢谢

意思是本来要求只能输入数字的,现在给了非数字的。

出错原因是:preparedstatement在执行的时候不能把红框内的串替换为sql中的问号,主要是to_date函数替换不了。

dat是个date类型应该写成:insert into tablename(colname) values ('"+dat.toString()+"')" ;
这样数据库才能把dat.toString()转化为数据库中的日期类型。

扩展资料:

注意事项

to_date函数先放到sql语句中,然后替换后面的变量,就不报这个错误了。

在oracle中建有date类型的字段,插入可以采取如下方法:

1、如果是小时为:1-12 采取如下格式:yyyy-mm-dd HH:MI:SS 

insert into test values(to_date('2009-5-7 07:09:37','yyyy-mm-dd HH:MI:SS'));

2、如果是小时为:1-24 采取如下格式:yyyy-mm-dd HH24:MI:SS 

insert into test values(to_date('2009-5-7 17:09:37','yyyy-mm-dd HH24:MI:SS'));

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-18
其实就是说,本来要求只能输入数字的,你现在给了非数字的。
估计是insert into zja_C 这个表时,给某个字段的值不符合规范,你可以检查下zjcx,jxdm,jxmc,zkrq,zkrs,kskm,kddm,pxcx,pxcsl 这几个字段哪些是只能传数字的。然后打印下传入的值是什么。
第2个回答  推荐于2017-10-04
dat是个date类型
应该写成
insert into tablename(colname) values ('"+dat.toString()+"')" ;
这样数据库才能把dat.toString()转化为数据库中的日期类型。

//
应按照 fancyivan 的做法去做,我只是简单处理了,要符合各种数据库的要求,还得用函数转化。
str=dat.getYear()+"-"+dat.getMonth()+"-"+dat.getDay()+" "+dat.getHour()+":"+dat.getMinute()+":"+dat.getSecond();
String sql = "insert into tablename(colname)values(to_date('"+str+"','yyyy-MM24-dd hh:mm:ss'))";追问

ORA-01858: 在要求输入数字处找到非数字字符

ORA-06512: 在 "SER_SHH.B", line 7
ORA-06512: 在 line 2指的是那儿啊?

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网