Хотя указанный вопрос аналогичен, он говорит о размещении исходного кода в базе данных, а не в классе, также я хотел бы использовать утилиты TOAD для этого.
Итак, в качестве доказательства концепции я пытался загрузить класс java в базу данных Oracle 12c и получить к нему доступ через функцию Oracle.
Я открыл Eclipse и создал новый проект Hello с классом Hello:
public class Hello {
public static String world()
{
return "Hello world";
}
}
Я скомпилировал его, и теперь на моем клиенте у меня есть
C:\Users\me\workspaces\Hello\bin\Hello.class
Я открыл TOAD для базы данных oracle 12c, затем перешел в утилиты/Java Manager и загрузил свой класс:
TOAD говорит, что он успешно загружен. Однако я не уверен, что это так.
Затем я зашел в редактор TOAD и создал функцию:
CREATE OR REPLACE function "DIR\KBD0010".helloworld RETURN VARCHAR2 AS
LANGUAGE JAVA NAME 'Hello.world () return java.lang.string';
Затем я попытался выбрать его с помощью sql-запроса:
select helloworld()
from dual;
И тогда я получаю:
ORA-29540: class Hello does not exist
loadjava
в фоновом режиме (или, по крайней мере, имеет сверхъестественное сходство в параметрах и полях, которые он принимает в качестве параметров) . Этот вопрос больше похож на шаги в этом связанном вопросе, почему он все еще не работает? - person MT0   schedule 14.06.2016resolve
используется для компиляции исходного кода в байтовый код — вы уже сделали это при загрузке файла.class
, поэтому вам не нужно выбирать этот параметр. Кроме того, если вы попробовали это, а затем попытались перезагрузить его во второй раз, вам нужно будет проверить опциюforce
, чтобы перезагрузить файл - если вы этого не сделаете, Oracle проигнорирует загрузку. - person MT0   schedule 14.06.2016