函数 x 不是过程或未定义

Saf*_*rah 2 oracle jsp stored-procedures function

我有一个函数,它接收 2 个字符串输入并返回一个字符串输出,我们称它为“x”,我正在尝试在 jsp 网站上调用该函数,我已经完成了:

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

callStmt.registerOutParameter(1, OracleTypes.NVARCHAR);
callStmt.setString(1, "hello");
callStmt.setString(2, "world");
callStmt.execute();
Run Code Online (Sandbox Code Playgroud)

这给出了这个错误:

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

我想,是的,我知道,这不是一个过程,而是一个函数!但为什么它认为这是一个程序呢?我应该如何运行我的代码?

Ale*_*ole 5

你得到的错误,因为你正在试图调用一个过程,而不是一个功能,因为你还没有任何指示返回参数。

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

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

callStmt.registerOutParameter(1, OracleTypes.NVARCHAR);
callStmt.setString(2, "hello");
callStmt.setString(3, "world");
callStmt.execute();
Run Code Online (Sandbox Code Playgroud)