ARRAY
ではそれをしませんでした しかし、それは機能するはずです。まず、out
を登録する必要があります 関数のパラメータ。ですから、このようにすることができます。
private final String PRODECURE_NAME = "{? = call <ProcedureName>(?,?,?)}";
Connection con = null;
CallableStatement cs = null;
try {
con = DAOFactory.getDatabaseConnection();
cs = con.prepareCall(PRODECURE_NAME);
cs.registerOutParameter(1, java.sql.Types.ARRAY);
cs.setYourType(2, <yourData>);
cs.setYourType(3, <yourData>);
cs.setYourType(4, <yourData>);
cs.execute();
Array arr = cs.getArray(1);
if (arr != null) {
String[] data = (String[]) arr.getArray();
}
}
catch (SQLException ex) {
Logger.getLogger(OracleLiekDAO.class.getName()).log(Level.SEVERE, null, ex);
try {
con.rollback();
}
}
finally {
if (con != null) {
try {
con.close();
}
catch (SQLException ex) {
Logger.getLogger(OracleLiekDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
この男を試してみて、それができるかどうかにかかわらず、私に教えてください。
編集:
これらの文字? 設定する1つのパラメーターを表します(パラメーター化されたものとして名前が付けられます)。したがって、これは次のとおりです。
cs.setYourType(2, <yourData>);
cs.setYourType(3, <yourData>);
cs.setYourType(4, <yourData>);
つまり、3つのパラメータ(?)を設定します。メソッドの最初のパラメータは列インデックスで、2番目は特定のタイプのデータです。
編集2:
申し訳ありませんが、悪い解決策を書きました。すでに更新されているので、今すぐコードを確認して試してください。