gpt4 book ai didi

java - 如何在 DB2 中使用 java 运行带有返回和输入输出参数的 PLSQL 函数?

转载 作者:行者123 更新时间:2023-12-04 04:55:31 25 4
gpt4 key购买 nike

我在 DB2 中创建了一个 PLSQL 函数并尝试使用 java 来执行它。但是我收到了 -440 的错误代码,说明找不到匹配的存储过程。
请参阅下面的代码片段。

Java 代码

    Connection dbConnection = null;
CallableStatement callableStatement = null;

try {
dbConnection = getDBConnection();
dbConnection.setAutoCommit(false);


String getDBUSERByUserIdSql = "{? = call saju_func(?,?)}";

callableStatement = dbConnection.prepareCall(getDBUSERByUserIdSql);
callableStatement.registerOutParameter(1, java.sql.Types.INTEGER);
callableStatement.registerOutParameter(3, java.sql.Types.INTEGER);

callableStatement.setInt(2, 10);
callableStatement.setInt(3, 20);


// execute getDBUSERByUserId store procedure
callableStatement.executeUpdate();

int sum = callableStatement.getInt(1);
System.out.println(sum);
dbConnection.commit();


} catch (SQLException e) {
dbConnection.rollback();
System.out.println(e.getMessage());

} finally {

if (callableStatement != null) {
callableStatement.close();
}
if (dbConnection != null) {
dbConnection.close();
}
}
}

PLSQL 函数
CREATE OR REPLACE FUNCTION saju_func (
s_num1 IN NUMBER,
s_num2 IN OUT NUMBER )
RETURN NUMBER
IS
BEGIN
s_num2:= (s_num1+s_num2);
RETURN s_num2;
END saju_func;
/

我尝试过类似的过程(相同的代码没有返回)并且工作正常。

最佳答案

我不相信您可以在 DB2 中调用函数。 CALL 仅适用于存储过程。您可以将函数重写为存储过程,也可以执行调用该函数的 PL/SQL 块 ( examples here )。

关于java - 如何在 DB2 中使用 java 运行带有返回和输入输出参数的 PLSQL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16808139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com