2014-01-31 2 views
0

Когда я создаю функцию Oracle в SQL Developer все в порядке, но когда я создаю ту же функцию, с помощью JDBC он находится в нерабочем состояниифункция Oracle создала с помощью JDBC находится в нерабочем состоянии

Вот пример функции:

create or replace function TEST_FUNC return number is 
begin 
    return 100; 
end; 

код Java:

Connection con = ...; 
Statement stmt = con.createStatement(); 
stmt.execute(sql); 

Когда я выполняю функцию:

select TEST_FUNC() from dual; 

Я получаю ошибку: ORA-06575: пакет или функция TEST_FUNC находится в нерабочем состоянии

Можете ли вы объяснить, что я делаю неправильно?

+0

Хорошо, вы посмотрели, какие ошибки есть в функции? – OldProgrammer

+2

'select * from user_errors, где name = 'TEST_FUNC'' –

+0

@EgorSkriptunoff Он дает:« PLS-00103: встречается символ «» при ожидании одного из следующего: начать пакет функций pragma procedure тип подтипа использовать <идентификатор> форма текущий курсор внешнего языка ". Когда я создаю ту же функцию в SQL Developer, этот запрос не показывает никаких ошибок. – ako

ответ

1

Функция должна быть соблюдена для их использования. Это не исключение. Также убедитесь, что в вашем запросе нет завершающего CR/LF. Скопируйте его в текстовый редактор (текстовая панель), чтобы узнать, есть ли у вас.

+0

Как скомпилировать функцию через jdbc? Я пробовал stmt.execute ("alter function TEST_FUNC compile"), но это не помогло. – ako

+0

Да, у меня CR/LF в запросе, потому что я прочитал его из файла. Запрещены ли они в оракуле? – ako

+0

Я бы сказал, да. Тем не менее, я предпочитаю попробовать. – sadhu

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