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

Опитайте този човек и ми дайте отговор дали става или не.

РЕДАКТИРАНЕ:

Тези символи ? представлява един параметър, който ще зададете (именува се като параметризиран). И така:

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

означава, че задавате трите си параметъра (?), първият параметър на метода е индекс на колона, а вторият са данните от вашия конкретен тип.

РЕДАКТИРАНЕ 2:

Съжалявам, че написах лошо решение, вече актуализирано, така че проверете кода сега и го опитайте.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. System.Data.OracleClient изисква клиентски софтуер на Oracle версия 8.1.7

  2. Има ли най-добрият начин да избегнете изпълнението на процес повече от веднъж в Oracle?

  3. Как работи подзаявката в оператора select в oracle

  4. Как да получа колона с първичен ключ в Oracle?

  5. OracleDataSource срещу Oracle UCP PoolDataSource