ORA-29531: нет метода в ошибке класса - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь написать функцию Wrapper в PL / SQl для вызова функции кодирования класса org.apache.commons.codec.language.colognephonetic, как описано на официальной вики-странице apache commons. Cologne Phonetic Apache

Функция оболочки выглядит следующим образом:

  function get_phonetic_string(i_string VARCHAR2) RETURN VARCHAR2 AS LANGUAGE java name 'org.apache.commons.codec.language.ColognePhonetic.encode(
                                          java.lang.String
                                          ) return java.lang.String';

Но, когда я выполняю свою функцию оболочки, я получаю следующую ошибку: ORA-29531: нет метода кодирования в классе org / apache / commons / codec / language / ColognePhonetic .Но, очевидно, есть функция кодирования.

Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

1 Ответ

0 голосов
/ 24 мая 2018

Во-первых, убедитесь, что класс org.apache.commons.codec.language.ColognePhonetic находится в базе данных (вероятно, его не будет).

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

Должен возвращать строку, если она существует (возможно, ее необходимо запустить как привилегированный пользователь).).

Если его не существует, вам нужно будет использовать приложение loadjava для загрузки библиотеки jar, содержащей классы.

Затем напишите обертку для создания статической функции, которая делаетэкземпляр класса ( непроверенный ):

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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...