Создание функции в базе данных Oracle с использованием Java напрямую - PullRequest
3 голосов
/ 05 мая 2011

Я понимаю, что можно создать функцию java в базе данных oracle с помощью команды CREATE JAVA - смотрите здесь .Я много читал о том, как это сделать, но чем больше я читаю, тем больше нужно читать, кажется.

То, что я хочу сделать, просто.Поскольку я уже очень хорошо знаком с Java, я не хочу изучать PL / SQL, тем более что проект, над которым я работаю, довольно маленький.Я также не хочу слишком много возиться с этой функцией, все, что я хочу сделать, это что-то вроде следующего:

1) Объявить функцию при подключении к базе данных, например:

CREATE JAVA AS 
    public class Example{
        public static bool returnTrue() {
            return true;
        }
    }

2) Затем вызовите функцию при подключении, как:

SELECT Example.returnTrue() FROM DUAL;

Возможно ли это?
Как?

Ответы [ 2 ]

8 голосов
/ 05 мая 2011

Непосредственно невозможно, вам нужен еще один шаг:

(Обратите внимание, что вы не можете вернуть логический тип в вызываемой функции SQL. Вы должны вернуть действительный тип Oracle SQL, в данном примере - String).

Создайте свою функцию:

create or replace and compile java source named returntrue as
public class example
{ public static String returnTrue() { return "TRUE"; } };

Вы должны создать «оболочку» PL / SQL для взаимодействия между функцией Java и PL / SQL:

SQL>     CREATE OR REPLACE FUNCTION returnTrue
  2      RETURN VARCHAR2
  3      AS LANGUAGE JAVA
  4      NAME 'example.returnTrue() return java.lang.String';
  5  /


Function created

SQL> select returntrue from dual;

RETURNTRUE
--------------------------------------------------------------------------------
TRUE

Больше информации в документации Oracle .

3 голосов
/ 06 мая 2011

Как вы инвестировали в Oracle? Если ответ где-то между «изрядным количеством» и «от этого зависит моя жизнь», изучите PL / SQL. В некотором смысле это странный язык, но он делает то, что делает, и это обеспечивает процедурный уровень поверх SQL. Если то, что делает ваш код, более глубокое или сложное, чем «процедурный уровень поверх SQL», вам вообще не следует использовать хранимые процедуры. Запустите свою собственную JVM и используйте JDBC, когда вам это нужно.

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