0

我从java调用存储过程。现在我需要通过它的名字而不是它的位置索引来设置存储过程的参数,这可行吗?

我不想使用字符串连接,但处理起来既不安全也不丑陋。

注意:我也需要使用 OUT/INOUT 参数。

4

2 回答 2

2

我们可以使用格式命名参数

cstmt.setString("arg", name);

其中 cstmt 是CallableStatement

其中 arg 是相应存储过程中的参数名称。

我们不需要以与存储过程中的参数相同的顺序命名参数,因为在这种情况下我们将使用 paramname。

您也可以在以下链接中浏览有关 CallableStatement 的教程 -

http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.jdbc_pg.doc/jdbc89.htm

您可以阅读链接 - 链接中有 registerOutParameter 语句 -

// Register out parameter which should return the product is created.
  cstmt.registerOutParameter("prod_id", Types.FLOAT);
于 2013-03-11T09:40:09.237 回答
1

这是可行的,但不是在语言中原生的。您将需要编写自己的代码来提供此功能或依赖第三方代码(推荐方法)。我过去成功地使用了这篇文章中的简单代码。它不能处理所有情况,但很容易扩展。如果您正在寻找更强大的解决方案,SpringFramework 还提供了一些库来提供此功能。

于 2013-03-11T09:27:06.890 回答