ORACLE 缺少逗号 问题 ?

finalsyo 2008-09-10 02:27:51
String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,
paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
+ pr.getMoney()
+ " , "
+ pr.getIssuedate()
+ " , "
+ pr.getOperatorid()
+ " , '"
+ pr.getPayreckonid()
+ "' , '"
+ pr.getPaytypeid() + "' )";

一开始是这样写的SQL,然后执行时报 “缺少逗号”的错误!

String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,
paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
+ pr.getMoney()
+ " , to_date("
+ pr.getIssuedate()
+ ",'YYYY-MM-DD HH24:MI:SS') , "
+ pr.getOperatorid()
+ " , '"
+ pr.getPayreckonid()
+ "' , '"
+ pr.getPaytypeid() + "' )";

然后改成这样,加了一个to_date()函数,执行后报“java.sql.SQLException: ORA-00907: 缺失右括号”错误!

这里的pr.getIssuedate() 里放的是 new Date()出来的值。

望 高手 解答该如何修改~
...全文
737 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
finalsyo 2008-09-11
  • 打赏
  • 举报
回复
所以现在 我先是在程序中用 simpledateformat 将它转成 yyyy-MM-dd HH:mm:ss格式的 在往里插入 不在SQL中转换了!
finalsyo 2008-09-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaoxiao1984 的回复:]
String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,
paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
+ pr.getMoney()
+ " , to_date('"
+ pr.getIssuedate()
+ "', 'YYYY-MM-DD HH24:MI:SS') , "
+ pr.getOperatorid()
+ " , '"
+ pr.getPayreckonid()
+ "' , '"
+ pr.getP…
[/Quote]

由于是NEW DATE()出来的,所以即使是 HH24:MI也不匹配,可以用pr.getIssuedate().toLocalString()转一下,不过这样还是报 缺少括号的错误

xiaoxiao1984 2008-09-10
  • 打赏
  • 举报
回复
看了一眼,new Date的日期格式需要转换一下就好了

public static void main(String[] args) {

java.util.Date t = new java.util.Date();
System.out.println(t);
System.out.println( new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()));
System.out.println( new java.text.SimpleDateFormat("HH:mm:SS").format(new java.util.Date()));

}

output结果:

Wed Sep 10 16:36:54 CST 2008
2008-09-10
16:36:734
xiaoxiao1984 2008-09-10
  • 打赏
  • 举报
回复
String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,
paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
+ pr.getMoney()
+ " , to_date('"
+ pr.getIssuedate()
+ "', 'YYYY-MM-DD HH24:MI:SS') , "
+ pr.getOperatorid()
+ " , '"
+ pr.getPayreckonid()
+ "' , '"
+ pr.getPaytypeid() + "' )";

System.out.println(sql); //打出来看一眼,看看日期的值和格式匹配不,必须一定要求是yyyy-mm-dd hh24:mi:ss 的格式才能正常匹配to_date(..., 'YYYY-MM-DD HH24:MI:SS')这样的格式

应该是new java.util.Date()出来的日期格式和yyyy-mm-dd hh24...不匹配导致的
hyrongg 2008-09-10
  • 打赏
  • 举报
回复
pr.getIssuedate() 你这个可能不是类似 20080910 格式的日期,在java里面要转换一下才行。
或者把 pr.getIssuedate()值打印出来看看
finalsyo 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hyrongg 的回复:]
String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,
paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
+ pr.getMoney()
+ " , to_date('"
+ pr.getIssuedate()
+ "','YYYY-MM-DD HH24:MI:SS') , "
+ pr.getOperatorid()
+ " , '"
+ pr.getPayreckonid()
+ "' , '"
+ pr.getP…
[/Quote]

需要在MYECLISP里设置RESIN,有次整乱过,就没在乱试过。
new Date()出来的值 , 用你提示的这种TO_DATE()转换时会报 “(完整) 年份值必须介于 -4713 和 +9999 之间”的错误
hyrongg 2008-09-10
  • 打赏
  • 举报
回复
String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,
paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
+ pr.getMoney()
+ " , to_date('"
+ pr.getIssuedate()
+ "','YYYY-MM-DD HH24:MI:SS') , "
+ pr.getOperatorid()
+ " , '"
+ pr.getPayreckonid()
+ "' , '"
+ pr.getPaytypeid() + "' )";
hyrongg 2008-09-10
  • 打赏
  • 举报
回复
你把java里面dubug 的sql字符串贴出来看看

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧