Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-29531 :aucune méthode dans l'erreur de classe

Tout d'abord, assurez-vous que le org.apache.commons.codec.language.ColognePhonetic la classe est dans la base de données (elle ne le sera probablement pas).

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

Doit renvoyer une ligne si elle existe (peut nécessiter une exécution en tant qu'utilisateur privilégié).

S'il n'existe pas, vous devrez utiliser le loadjava application pour charger la bibliothèque jar contenant les classes.

Ensuite, écrivez un wrapper pour créer une fonction statique qui crée une instance de la classe (non testé ):

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