跑批量时 在java代码中这么写,各位帮我看一下这是什么意思

PreparedStatement ps = null;
StringBuffer sb = new StringBuffer();
sb.append("INSERT INTO RPT_TRADE(MON_DATE,BR_NO,BR_LEV,TRADE_NO,USE_NO,VOU_TYPE,BAL,AMT) ");
sb.append("SELECT ?,BR_NO,'0',LN_TRADE_NO,LN_USE,VOU_TYPE,SUM(BAL),");
sb.append("SUM(CASE SUBSTR(BEG_DATE,1,6) WHEN ? THEN DUE_AMT ELSE 0.00 END) ");
sb.append("FROM RPT_XD GROUP BY BR_NO,LN_TRADE_NO,LN_USE,VOU_TYPE");
ps = conn.prepareStatement(sb.toString());

这个sb拼出来的sql能运行吗 怎么解释啊
ps.setString(1, mon_date);
ps.setString(2, mon_date.substring(0, 6));
count = ps.executeUpdate();
conn.commit();

第1个回答  2013-05-06
看这段代码大概的意思是,复制处理后的一张表的信息到另一张表,但是我不明白为什么要在select后面放?号进去,列名还需要set进去?一般只有在查询条件的时候才用问号代替的。没仔细看sql,但个人感觉不可行。追问

这个是已经在用的代码 我拿下来看看的 但是没太看明白 公司系统在用的 。。。只是不知道为什么这样

第2个回答  2013-05-06
INSERT 语句的完整句法如下:
INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES |
Values_list | select_statement}

select 后面的第一个?是日期,可以这样用的追问

啊 原来是这样 就是不用values关键字也行是吧 恩恩 数据库真是复杂啊 谢谢啊

追答

一般会跟上"values", 那样看起来很清楚

本回答被提问者采纳
相似回答