Функция в недопустимом состоянии: Oracle с Jdbc - PullRequest
1 голос
/ 08 ноября 2011

У меня есть запрос в строке Java.Что мне нужно сделать, это запустить этот запрос по JDBC.Запрос:

String strQuery= " CREATE OR REPLACE FUNCTION GET_CLOSE_DATE ( PARAM_DOCUMENT_ID IN NUMBER ) 
     RETURN DATE AS
      V_CLOSE_DATE DATE;
     BEGIN
       SELECT MAX(TOP_LEVEL_ELEMENT.CLOSE_DATE_TIME) INTO V_CLOSE_DATE  
       FROM TOP_LEVEL_ELEMENT  WHERE TOP_LEVEL_ELEMENT.DOCUMENT_ID = PARAM_DOCUMENT_ID; 
       RETURN V_CLOSE_DATE; 
     END GET_CLOSE_DATE;";

Я использую JDBC

Statement stmt = con.createStatement();
stmt.executeUpdate(strQuery);

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

alter function GET_CLOSE_DATE compile;

сразу после запуска запроса на создание функции.Оба выполняются успешно, но функция остается в недопустимом состоянии.Пожалуйста, предложите некоторые решения.

1 Ответ

0 голосов
/ 08 ноября 2011

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

SELECT * 
  FROM user_errors 
 WHERE name = 'GET_CLOSE_DATE';

EDIT:

Это могут быть встроенные CR / LF в вашей строке. Попробуйте объединить вашу строку SQL, например:

String strQuery= " CREATE OR REPLACE FUNCTION GET_CLOSE_DATE ( PARAM_DOCUMENT_ID IN" +
                 " NUMBER) RETURN DATE AS " +
                 " V_CLOSE_DATE   DATE " +
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...