Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-29531:Keine Methode im Klassenfehler

Stellen Sie zunächst sicher, dass org.apache.commons.codec.language.ColognePhonetic Klasse ist in der Datenbank (wahrscheinlich nicht).

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

Sollte eine Zeile zurückgeben, falls vorhanden (muss möglicherweise als privilegierter Benutzer ausgeführt werden).

Wenn es nicht existiert, müssen Sie loadjava verwenden Anwendung zum Laden der JAR-Bibliothek mit den Klassen.

Schreiben Sie dann einen Wrapper, um eine statische Funktion zu erstellen, die eine Instanz der Klasse erstellt (ungetestet ):

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';