java调用存储过程?当一个存储过程有返回记录集时,该怎样在java中返回?

本文介绍如何在Oracle中创建存储过程,并通过OUT参数返回单个值或使用游标返回记录集。演示了如何使用Java连接Oracle数据库并调用这些存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS BEGIN ..... END TESTB; String driver = "oracle.jdbc.driver.OracleDriver"; String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq "; Statement stmt = null; ResultSet rs = null; Connection conn = null; CallableStatement cstmt = null; Class.forName(driver); conn = DriverManager.getConnection(strUrl, " hyq ", " hyq "); cstmt = conn.prepareCall("{ call HYQ.TESTB(?,?) }"); cstmt.setString(1, "100"); cstmt.registerOutParameter(2, Types.VARCHAR); cstmt.execute(); String testPrint = cstmt.getString(2); 3.返回列表 由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分, 建一个程序包。如下: CREATE OR REPLACE PACKAGE TESTPACKAGE AS TYPE Test IS REF CURSOR; end TESTPACKAGE; 2,建立存储过程,存储过程为: CREATE OR REPLACE PROCEDURE TESTC(p out TESTPACKAGE.Test) IS BEGIN ...... END TESTC; 可以看到,它是把游标(可以理解为一个指针),作为一个out 参数来返回值的。 ------------------ proc = conn.prepareCall("{ call hyq.testc(?) }"); proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); proc.execute(); rs = (ResultSet)proc.getObject(1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值