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>