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

ORA-29531:nessun metodo nell'errore di classe

Innanzitutto, assicurati che org.apache.commons.codec.language.ColognePhonetic class è nel database (probabilmente non lo sarà).

SELECT *
FROM   ALL_OBJECTS
WHERE  OBJECT_TYPE LIKE '%JAVA%'
AND    LOWER( OBJECT_NAME ) LIKE '%colognephonetic%';

Dovrebbe restituire una riga se esiste (potrebbe essere necessario eseguirla come utente privilegiato).

Se non esiste, dovrai usare loadjava applicazione per caricare la libreria jar contenente le classi.

Quindi scrivi un wrapper per creare una funzione statica che crei un'istanza della classe (non testata ):

CREATE JAVA SOURCE NAMED Phonetics AS
import org.apache.commons.codec.language.ColognePhonetic;

public class Phonetics {
  public static String encode(
    final String text
  ){
    final ColognePhonetic cp = new ColognePhonetic();
    return cp.encode( text );
  }
}
/

CREATE FUNCTION get_phonetic_string(i_string VARCHAR2) RETURN VARCHAR2 AS
  LANGUAGE JAVA NAME 'Phonetics.encode( java.lang.String ) return java.lang.String';