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

ORA-29531:ingen metode i klassefejl

Sørg først for, at org.apache.commons.codec.language.ColognePhonetic klasse er i databasen (det bliver det sandsynligvis ikke).

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

Skal returnere en række, hvis den findes (skal muligvis køres som en privilegeret bruger).

Hvis det ikke findes, skal du bruge loadjava applikation til at indlæse jar-biblioteket, der indeholder klasserne.

Skriv derefter en wrapper for at skabe en statisk funktion, der gør en forekomst af klassen (utestet ):

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



  1. Sådan implementeres et tovejs unikt indeks på tværs af flere kolonner

  2. Konverter unix tidsstempel til Dato og DateTime - SQL/ORACLE

  3. Find noderækkefølge i XML-dokument i SQL Server

  4. sqlalchemy, indstiller MySQL-tegnsæt som `create_engine`-argument