Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    28

    Java - array oracle in java

    da una classe Java chiamo una procedura oracle che dovrebbe restituire un array di String.
    La procedura sembra funzionare bene e il log oracle dice che le stringhe ci sono.
    In java faccio quanto segue....

    String elements[] = new String[1];

    ArrayDescriptor desc = (ArrayDescriptor)ArrayDescriptor.createDescriptor( "ERRARRAYS", con);

    System.out.println("passato arrayDescriptor");

    ARRAY arr = new ARRAY(desc, con, elements);

    String sql = "{call PK_VALIDA_DATI_PF.main(?,?,?,?,?,?,?,?,?)}";

    cstm = con.prepareCall(sql);

    SimpleTrace.trace("SQL: " + sql);
    cstm.setArray(8, arr);

    cstm.registerOutParameter(8, OracleTypes.ARRAY, "ERRARRAYS"); cstm.registerOutParameter(9, Types.VARCHAR); //descrizione err
    cstm.setString(1, cognome);
    cstm.setString(2, nome);
    cstm.setString(3, sesso);
    cstm.setTimestamp(4, dataNascita);
    cstm.setString(5, provinciaNascita);
    cstm.setString(6, comuneNascita);
    cstm.setString(7, codiceFiscale);
    SimpleTrace.trace("cstm.getString(9): " + cstm.getString(9));
    arr = ( (OracleCallableStatement) cstm).getARRAY(8);
    System.out.println("Vediamo che c'è nell'array" + arr);
    System.out.println("la lunghezza dell'array è:" + arr.length());
    String [] valori = (String[]) arr.getArray();
    for (int i = 0; i < valori.length; i++) {
    String valore = (String) valori[i];
    SimpleTrace.trace(i + ": [" + valore + "]");
    }

    Questo ultima istruzione mi stampa ??? tre punti interrogativi, mentre dal log della procedura so che l'array dovrebbe contenere una stringa tipo "errore.validazione.nome" o roba del genere...
    qualche idea????
    grazie!!

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao di solito io faccio:

    codice:
    toStringArray((((ARRAY) cs.getArray(2))).getOracleArray());
    dove il metodo toStringArray è:

    codice:
    private String[] toStringArray(Datum[] dati) throws HandlerException {
    
            String[] result = new String[dati.length];
    
            try {
                for (int i = 0; i < dati.length; i++) {
    
                    result[i] = dati[i].stringValue();
                }
            } catch (SQLException ex) {
    
                throw new HandlerException(ex);
            }
            return result;
        }
    Spero ti sia utile, ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.