2 つの select ステートメントがあり、これら 2 つのステートメントに対して「union all」を作成します。次に、PreparedStatement を使用し、この PreparedStatement に文字列を設定すると、 「java.sql.SQLException: Missing IN or OUT parameter at index:: 2」と表示されます。
私がグーグルをツアーした後、何人かの人々はそれぞれの「?」に対してそれを言います。sql ステートメントでは、setString を記述する必要があります。私の状況では、2 つの select ステートメントがあるため、2 つの "?" があります。しかし、私は「すべてを結合」しているので、その「?」が想定されているかどうかはわかりません。または2つの「?」。しかし、 preparedStatement.setString(1,ApplicationNo); のように 2 つの setString を記述しようとすると、prepareStatement.setString(2,ApplicationNo); 、「ORA-00918:列があいまいに定義されています」と表示されます。
この問題を解決する方法がわかりません。
私のユニオンセレクトステートメントは
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 は準備済みStatement.setString(1,ApplicationNo);
setStringの例を検索したところ、次のようなsetStringが2つある場合、2つの異なるパラメーターがあります
preparedStatement.setString(1,ApplicationNo);
preparedStatement.setString(2,LoginID);
しかし、両方の select ステートメントに ApplicationNo が必要です。