2010-02-26 1 views
1

Учитывая следующий Java, который загружается в базу данных с помощью loadjava:PLS-00103 ошибка при Comping Oracle хранимой функции

package grassie.example; 

public class Example { 

    public static String test(){ 
     return "Hello World!"; 
    } 
} 

И дал следующую Oracle хранимой функции:

CREATE OR REPLACE FUNCTION TEST_FUNCTION RETURN VARCHAR2 
AS LANGUAGE JAVA 
NAME 'grassie.example.Example.test() RETURN java.lang.String'; 

Почему функция не компилируется со следующей ошибкой ?:

Error(3,1): PLS-00311: the declaration of "grassie.example.Example.test() RETURN java.lang.String" is incomplete or malformed

Клиент Oracle - 9.2.0.8.0, база данных - 9.2.0.8.0. Использование SQL Developer 2.1.0.63

Редактировать: Исправлен мой вопрос, основанный на ответах ниже.

Чтобы уточнить, я создал этот простой тестовый класс и функцию, потому что у меня возникают проблемы с более сложными Java и сохраненными функциями, которые принимают и возвращают различные типы параметров.

+0

У меня нет 'Java' на моей установке' XE', но AFAIK, ключевые слова Java должны быть строчными. Попробуйте заменить 'RETURN' на' return' в предложении 'NAME'. – Quassnoi

+0

@Quassnoi, пожалуйста, ответьте полным ответом, поэтому я даю вам кредит на это :) –

ответ

2

Избавьтесь от пустых скобок в объявлении функции:

CREATE OR REPLACE FUNCTION TEST_FUNCTION RETURN VARCHAR2 
AS LANGUAGE JAVA 
NAME 'grassie.example.Example.test() RETURN java.lang.String'; 

Update:

Java ключевые слова должны быть строчными. Попробуйте заменить RETURN на return в статье NAME.

+0

Я делаю это, я получаю следующую ошибку: 'Ошибка (3,1): PLS-00311: объявление« grassie.example.Example » .test() RETURN java.lang.String "является неполным или искаженным" –

1

если функция не имеет параметров, вам не нужны круглые скобки():

SQL> CREATE OR REPLACE FUNCTION TEST_FUNCTION() RETURN NUMBER AS 
    2 BEGIN 
    3  RETURN 0; 
    4 END; 
    5/

Warning: Function created with compilation errors 

SQL> CREATE OR REPLACE FUNCTION TEST_FUNCTION RETURN NUMBER AS 
    2 BEGIN 
    3  RETURN 0; 
    4 END; 
    5/

Function created 
Смежные вопросы