【发布时间】:2010-09-23 01:39:06
【问题描述】:
我有两个 select 语句,并为这两个语句创建“union all”。然后,我使用 PreparedStatement,当我将 String 设置为此 PreparedStatement 时,它显示 "java.sql.SQLException: Missing IN or OUT parameter at index:: 2"。
在我参观了谷歌之后,有些人对每个“?”都这么说。在 sql 语句中,我应该写 setString。对于我的情况,我有两个选择语句,所以我有两个“?”但我“联合所有”,所以我不确定是否假定一个“?”或两个“?”。但是当我尝试写两个 setString 之类的 preparedStatement.setString(1,ApplicationNo); preparedStatement.setString(2,ApplicationNo); ,它显示 “ORA-00918: column ambiguously defined”。
我不知道如何解决这个问题。
我的工会选择语句是
query.append("select TO_CHAR(TRUNC(SYSDATE),'DD MONTH,YYYY'),a.appl_no,a.assigned_to,b.co_name,b.co_name2,a.credit_acct_no,a.credit_bank_no,a.credit_branch_no,a.service_id ");
query.append("from newappl a, newappl_hq b where b.appl_no = a.appl_no and a.appl_no=(select appl_no from newappl where appl_no=?) and rownum=1 and credit_status = 'CRPEND'");
query.append(" union all ");
query.append("select TO_CHAR(TRUNC(SYSDATE),'DD MONTH,YYYY'),a.appl_no,a.assigned_to,c.trading_name co_name, ' ' co_name2, d.bank_acct_no credit_acct_no, d.bank_no credit_bank_no, d.bank_branch_no credit_branch_no,a.service_id ");
query.append("from newappl a,newappl_hq b, newappl_ret c, newappl_ret_bank d where b.appl_no = a.appl_no or a.appl_no = c.appl_no and c.ret_id= d.ret_id and a.appl_no=(select appl_no from newappl_ret where appl_no=?) and rownum=1 and credit_status = 'CRPEND'");*
setString 是 preparedStatement.setString(1,ApplicationNo);
当我搜索setString示例时,如果有两个setString,则有两个不同的参数
preparedStatement.setString(1,ApplicationNo);
preparedStatement.setString(2,LoginID);
但是两个选择语句我都需要 ApplicationNo。
【问题讨论】:
标签: java sql oracle jdbc ora-00918