gpt4 book ai didi

java - 如何调用少参数的存储过程?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:35 25 4
gpt4 key购买 nike

String foo = "{call myStored(?,?,?,?)}";
callableStatement = dbConnection.prepareCall(foo);
callableStatement.setInt(1, 10);

callableStatement.executeUpdate();

我有一个包含 20 个参数的存储过程。是否可以只设置几个参数?存储过程也返回一个值。我尝试只执行 call myStored(?) 并设置 callableStatement.setInt("colname", 10); 我的参数数量不匹配...返回值是否也应该算作一个参数,所以它是 21?

最佳答案

您必须绑定(bind)声明中声明的所有参数。 (对于每个 ? 您必须使用 set* 或 registerOutParameter 提供值)但是如果这些参数具有默认值(这在 PL/SQL 中是可能的)那么您不必在语句中声明它们。

在数据库中:

FUNCTION get_empName(emp_id NUMBER, emp_name VARCHAR2 DEFAULT 'Something') RETURN VARCHAR2

在 Java 中:

String statement1= "{? = call get_empName(?)}"; // valid statement
String statement2= "{? = call get_empName(?, ?)}"; // valid statement

如果你有一个存储函数(它返回值)那么你可以这样写语句

String foo = "{? = call myStored(?)}";
callableStatement = dbConnection.prepareCall(foo);
callableStatement.registerOutParameter(1, oracle.jdbc.OracleTypes.NUMBER);
callableStatement.setInt(2, 10);

callableStatement.executeUpdate();

关于java - 如何调用少参数的存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27238833/

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