sql >> Database teknologi >  >> RDS >> Oracle

Hent pl/sql-array-returværdier i java

Det gjorde jeg ikke med ARRAY men det burde virke. Først skal du registrere dig out parameter for din funktion. Så det kan være sådan her.

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

Prøv denne mand og giv mig så svar om det gør det eller ej.

EDIT:

Disse char ? repræsenterer en parameter, som du vil indstille (den er navngivet som parametriseret). Så dette:

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

betyder, at du indstiller dine tre parametre (?), første parameter i metode er kolonneindeks og for det andet er du data af din specifikke type.

EDIT 2:

Så undskyld, jeg skrev en dårlig løsning, allerede opdateret, så tjek koden nu og prøv den.



  1. En teknisk sammenligning:Microsoft Access 2016 vs SQL Server 2016

  2. Sådan tælles forskellige værdier i SQL

  3. ORA-12170:TNS:Forbindelsestimeout opstod

  4. SQL-forespørgsel for at få data for de sidste 3 måneder