我在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查询后立即执行。两者都成功执行但功能仍然处于无效状态。请提出一些解决方案。
答案 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 " +
...