sql >> データベース >  >> RDS >> Oracle

pl/sql配列の戻り値をJavaでフェッチする

    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:

    申し訳ありませんが、悪い解決策を書きました。すでに更新されているので、今すぐコードを確認して試してください。



    1. LIKEフィルターでアンダースコア文字を使用するとすべての結果が得られるのはなぜですか?

    2. OracleSQLDeveloperでCLOBフィールドデータをエクスポートする方法

    3. Struts2をHibernateおよびPostgreSQLと接続する方法

    4. SQL Serverドライバを使用して正常に接続できず、ログインに失敗します