我有一个函数接收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:语句被忽略
我喜欢,是的,我知道,它不是一个程序,它是一个功能!但为什么它认为它是一个程序?我应该如何运行我的代码?
答案 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();