我有兩個select語句,併爲這兩個語句創建'union all'。然後,我使用PreparedStatement,當我將String設置爲PreparedStatement時,它顯示「java.sql.SQLException:在index :: 2處缺少IN或OUT參數」。PreparedStatement error
我逛過谷歌後,有人說每個「?」在sql語句中,我應該寫setString。對於我的情況,我有兩個選擇的陳述,所以我有兩個「?」但我「聯合所有」,所以我不確定是否假設一個「?」或兩個「?」。但是當我試圖編寫兩個setString像 preparedStatement.setString(1,ApplicationNo);preparedStatement.setString(2,ApplicationNo); ,它顯示「ORA-00918:不明確定義的列」。
我不知道如何解決這個問題。
我的工會選擇statment是
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兩種選擇statments。
我試過了,它顯示「ORA-00918:列模糊定義」 – daydream 2010-09-23 01:47:01
您可以成功運行該查詢在SQL * Plus中,讓Java脫離等式?可能是查詢本身的問題。 – duffymo 2010-09-23 01:50:10
是的,thx和它解決了 – daydream 2010-09-23 05:10:01