当前位置: 首页 > 知识库问答 >
问题:

JDBC存储过程调用IN参数记录表

梁兴文
2023-03-14

我想用java调用一个记录类型表的存储过程。记录只包含数字,但我必须传递整数和小数。

我还没有为我的问题找到合适的解决方案(无论是OracleCallableStatement还是StoredProcedurey)。

共有1个答案

万俟穆冉
2023-03-14

您可以尝试使用Callable语句,它随附于java.sql包。

首先,您必须创建并打开连接。为此,我通常使用Sql2o实例连接到特定的数据库。

所以:

Sql2o sql2o = new Sql2o(dbUrl, dbUser, dbPass);
Connection conn = sql2o.open();
CallableStatement cstmt = conn.getJdbcConnection().prepareCall("{call your_stored_procedure(?,?,?,?,?,?,?,?,?)}")

问题标记是存储的IN/OUT参数的数量。要设置参数:

cstmt.setObject(1,your_value, Types.INTEGER);
cstmt.setObject(2, your_value, Types.DOUBLE);
... // set all your arguments
cstmt.execute();

如果存储的文件中也有out参数,则可以将其注册到

cstmt.registerOutParameter(8, java.sql.Types.INTEGER);

cstmt的第一个参数。setObject()是存储过程的参数索引

 类似资料:
  • 主要内容:创建CallableStatement对象,关闭CallableStatement对象,JDBC SQL转义语法在讨论JDBC Statement教程文章时,我们已经学习了如何在JDBC中使用存储过程。 本教程文章与该部分类似,但它将讲解演示有关JDBC SQL转义语法的其他信息。 就像对象创建和对象一样,它可使用同样的方式创建对象,该对象将用于执行对数据库存储过程的调用。 创建CallableStatement对象 假设需要执行以下Oracle存储过程 - 注意:上面的存储过程是为O

  • 我创建了一个存储过程,如下所示: //mysql中的存储过程 并且我正在调用Java中的存储过程,如下所示: //使用JDBC调用存储过程 但它显示了一个编译时异常,如下所示: CAN在参数中为存储的函数调用的返回值设置。

  • 我试图从JDBC调用以下pl/sql过程。 这就是我试图调用它的方式,但没有成功: 我刚刚读到oracle jdbc不支持pl/sql结构类型。因此,这在“无效名称模式:test.testrec_r”中失败 如何从Java调用这个过程?理想情况下,只使用java库/API,但这似乎几乎是不可能的,在简单的sql调用中封装pl/sql包并调用它的最佳解决方案是什么? 另外,我正在使用Spring J

  • 我想在Oracle存储过程中编写一个简单的插入语句。目标表有40列。因此,我计划在过程级别接受记录%rowtype类型的输入参数,而不是一个接一个地将所有参数传递给过程。 我的问题是, 首先可能吗 如果是,我如何从Java代码中调用这个过程并传递record类型的输入

  • 我有一个非常复杂的oracle存储过程,它搜索和检索一些数据。该过程返回一个输出参数-oracle游标。我通过JDBC执行过程: 问题是,查询有时会花费相当长的时间(几分钟),我希望用户能够通过单击按钮随时取消查询。我引用了stmt对象,但不幸的是(从其他线程)调用stmt.cancel()没有效果。 另一方面,当我将CallableStatement sql更改为以下查询时: 在调用stmt.c

  • 问题内容: 我试图了解如何调用以as为参数的PL / SQL过程。 考虑以下PL / SQL过程: 在将值绑定到IN参数时,我应该使用哪种方法? 对我来说,一个具有单独的游标记录字段的Java类,因为它是该类的成员和实例数组,它似乎是表示plsql CURSOR的正确方法。当我这样做时,我得到一个SQLException: 我使用了以下设置方法 这是我使用上面的语句得到的例外: 问题答案: 对我来