Oracle
 sql >> Base de données >  >> RDS >> Oracle

Récupérer les valeurs de retour du tableau pl/sql en java

Je n'ai pas fait ça avec ARRAY mais ça devrait marcher. Vous devez d'abord vous inscrire out paramètre de votre fonction. Donc ça peut être comme ça.

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);
                }
            }
        }

Essayez cet homme et dites-moi ensuite si c'est le cas ou non.

MODIF :

Ces chars  ? représente un paramètre que vous allez définir (il est nommé paramétré). Donc ceci :

cs.setYourType(2, <yourData>);
cs.setYourType(3, <yourData>);
cs.setYourType(4, <yourData>);

signifie que vous définissez vos trois paramètres (?), Le premier paramètre de la méthode est l'index de colonne et le second sont vos données de votre type spécifique.

MODIFICATION 2 :

Désolé, j'ai écrit une mauvaise solution, déjà mise à jour, alors vérifiez le code maintenant et essayez-le.