函数x不是过程或未定义

时间:2016-12-30 12:20:51

标签: oracle function jsp stored-procedures

我有一个函数接收2个字符串输入并返回一个字符串输出,让我们调用它' x',我试图在jsp网站上调用该函数,I& #39;完成了:

String jobquery = "{call x(?, ?)}";
CallableStatement callStmt = conn.prepareCall(jobquery);

callStmt.registerOutParameter(1, OracleTypes.NVARCHAR);
callStmt.setString(1, "hello");
callStmt.setString(2, "world");
callStmt.execute();

出现此错误:

  

java.sql.SQLException:ORA-06550:第1行第7列:PLS-00221:' x'不是过程或未定义ORA-06550:第1行第7列:PL / SQL:语句被忽略

我喜欢,是的,我知道,它不是一个程序,它是一个功能!但为什么它认为它是一个程序?我应该如何运行我的代码?

1 个答案:

答案 0 :(得分:4)

您收到该错误是因为 试图调用过程而不是函数,因为您没有指出任何返回参数。

您需要一个占位符作为返回值;您的参数编号也必须一致:

String jobquery = "{ ?=call x(?, ?) }";
CallableStatement callStmt = conn.prepareCall(jobquery);

callStmt.registerOutParameter(1, OracleTypes.NVARCHAR);
callStmt.setString(2, "hello");
callStmt.setString(3, "world");
callStmt.execute();