功能处于无效状态:Oracle与Jdbc

时间:2011-11-08 15:37:50

标签: java oracle jdbc

我在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;

在触发create function查询后立即执行。两者都成功执行但功能仍然处于无效状态。请提出一些解决方案。

1 个答案:

答案 0 :(得分:0)

尝试使用此命令查看与此功能相关的错误:

SELECT * 
  FROM user_errors 
 WHERE name = 'GET_CLOSE_DATE';

编辑:

它可能是你的字符串中的嵌入式CR / LF。尝试连接您的SQL字符串,如:

String strQuery= " CREATE OR REPLACE FUNCTION GET_CLOSE_DATE ( PARAM_DOCUMENT_ID IN" +
                 " NUMBER) RETURN DATE AS " +
                 " V_CLOSE_DATE   DATE " +
...