当前位置:首页 » 编程语言 » java中如何打开sql游标
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

java中如何打开sql游标

发布时间: 2022-06-23 21:19:25

1. 数据库里面的游标是什么Java里面的游标操作是什么

数据库里面的游标可以认为sql的一种循环方式。java没有游标这个概念,游标操作应该是指在java中操作sql的相应功能,如游标。

2. java调用存储过程返回游标的结果集无法关闭游标的问题

在过程里判断很简单呀

CREATE OR REPLACE PROCEDURE TESTPROC(CUR OUT SYS_REFCURSOR)
AS
default_c SYS_REFCURSOR;
BEGIN
OPEN CUR FOR SELECT * FROM AA;
if CUR%rowcount = 0 then
CUR:=default_c;
end if;
END;

定义一个默认空游标,没数据就返回它呗

3. java调用存储过程,打开结果集报递归SQL级别1出现错误且超出打开游标的最大数 这是怎么回事

在命令窗口执行show parameter open_cursors;
看看你给数据库配置的游标数是多大,估计是150
需要调整的话,网络搜一下游标设置。

4. 数据库中的游标和视图在JAVA项目中用在哪里方面,举几个例子

项目?需求分析?示例图?

5. java按字读取文件时游标的概念

读到哪的一个位置 Position

从0开始,读了多少个字节,就到多少个字节那里

6. java中怎样使用游标

java中没有,但可以用Types.OTHER来代替
另外如果用的是Oracle数据库,则很方便的用OracleTypes.CURSOR来获取游标 (需要class12.jar驱动程序)

7. sql 中游标的作用及使用方法

游标可以从数据库中查询出一个结果集,在你关闭它之前,你可以反复使用这个结果集,读取这个结果集中的任意行任意字段的内容,一般在存储过程或前台程序中常见。

8. 如何在java中关闭打开的oracle数据库的游标

在java 中声明一个Oracle引用游标类型 类, 直接 .close()就可以关闭

9. sql server存储过程的游标output后 java怎么接受它oracle返回的rs我会接受

1.存储过程中我定义了一个游标返回值

@CURSOR_subsidiaryaccounts CURSOR VARYING OUTPUT -- 返回明细账的游标

ALTER PROCEDURE [dbo].[p_ledger_subsidiaryaccounts]
@fyearGe int, --年
@fperiodGe int, --期
@fyearLe int, --年
@fperiodLe int, --期
@fposted int, --是否过账 1,表示包含未过账;0,表示不包含未过账数据
@facctId bigint, --科目ID
@fdetailId bigint, --核算项目ID
@CURSOR_subsidiaryaccounts CURSOR VARYING OUTPUT -- 返回明细账的游标
AS
BEGIN
SET NOCOUNT ON;
/*创建临时表*/

....

--1.对返回的游标进行数据的绑定
SET @CURSOR_subsidiaryaccounts = CURSOR
FORWARD_ONLY STATIC
FOR
SELECT ID,
FDate,
FYear,
FPeriod,
FVoucherId,
FNumber,
FExplanation,
Fdebit,
Fcridt,
Fdc,
Fendbalance
FROM #tmp
Order By ID asc,FYear,Fperiod
-- 2. 打开游标
OPEN @CURSOR_subsidiaryaccounts
END

2.我在JAVA代码中用JDBC模版执行这个存储过程,要注册个游标类型的返回值。
SQL Server的JDBC貌似不支持??不知道怎么解决呢?java代码如下:

public List<Map> listSubsidiary(final int fyearGe,final int fperiodGe,final int fyearLe,
final int fperiodLe,final Long facctId,final Long fdetailId,final int fposted) {

return (List<Map>) this.jdbcTemplate.execute(new CallableStatementCreator() {

@Override
public CallableStatement createCallableStatement(Connection conn) throws SQLException {
String sql = "{call p_ledger_subsidiaryaccounts(?,?,?,?,?,?,?,?)}";
CallableStatement cs = conn.prepareCall(sql);
cs.setInt(1, fyearGe);
cs.setInt(2, fperiodGe);
cs.setInt(3, fyearLe);
cs.setInt(4, fperiodLe);
cs.setInt(5, fposted);
cs.setLong(6, facctId);
cs.setLong(7, fdetailId);
//cs.registerOutParameter(8, java.sql.Types.OTHER);
cs.registerOutParameter(8, -10);
return cs;
}

},new CallableStatementCallback() {

@Override
public Object doInCallableStatement(CallableStatement cs)
throws SQLException, DataAccessException {
cs.execute();
ResultSet rs = (ResultSet)cs.getObject(8);
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
while(rs.next()){
System.out.println(rs.getString("FNumber"));
}
return list;
}
});
}<span></span>