當前位置:首頁 » 編程語言 » java中如何打開sql游標
擴展閱讀
賓得k5的參數如何配置 2022-06-30 15:37:58
固態移動硬碟評測 2022-06-30 15:34:10
針對校園暴力的采訪問題 2022-06-30 15:33:23

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>