我想用java调用一个记录类型表的存储过程。记录只包含数字,但我必须传递整数和小数。
我还没有为我的问题找到合适的解决方案(无论是OracleCallableStatement还是StoredProcedurey)。
您可以尝试使用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
我需要对一个参数为PL/SQL表的过程进行JDBC调用。我正在尝试结构对象。但是我没有做正确的事情。我得到错误: ORA-04043:对象“斯科特”。“对象列表结构”不存在。 以下是代码片段: 参数“?”对于本程序,类型为: 我们非常感谢任何能让我们成功的见解谢谢