【实习之T100开发,深入理解JVM的核心知识点

本文详细介绍了JVM中两种类型的游标:SCROLLING CURSOR和Non-SCROLLING CURSOR。SCROLLING CURSOR适用于查询程序,允许随机访问数据;Non-SCROLLING CURSOR则常用于报表程序,按顺序抓取数据。文中通过DECLARE、OPEN、FETCH、CLOSE等关键字阐述了SCROLLING CURSOR的工作原理,并对比了FOREACH在Non-SCROLLING CURSOR中的应用。

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

SCROLLING CURSOR 通常运用在 单文件控制 或 查询类 的程序,如『个人资料表』般的作业,可以随机抓取数据,一次一笔,再处理完后可以选择 往前一比往后一笔往这个查询序列中的任何一笔数据 移动的指针(CURSOR)。


DECLARE cursor_id SCROLL CURSOR [WITH HOLD] FOR sql statement

OPEN cursor_id [USING value]

FETCH [first|last|previous|next| cursor_id INTO variable

CLOSE cursor_id 

Non-SCROLLING CURSOR 通常运用在 双文件控制程序 或 报表 程序,如『个人出缺勤统计表』般的作业,抓取数据是 依序 (seguential) 的方式,一次可以将合条件要求的资料一笔接着一笔的抓出,直到资料全数抓完(或被强制终止)为止。


DECLARE cursor_id CURSOR [WITH HOLD] FOR sql statement

FOREACH cursor_id

[USING value]

[INTO variable ]

	...

END FOREACH 

SCROLLING CURSOR(DECLARE、OPEN、FETCH、CLOSE)

说明:通常用于 查询程序,可以 随即抓取资料

  1. 通过 DECLARE 定义

  2. 利用 OPEN 开启该 CURSOR

    例:OPEN test01_cursor

  3. 通过 FETCH cursor_name INTO 变量 抓取资料

DECLARE 概述

语法1:使用 已知的SQL语句 进行 CURSOR 声明


DECLARE cursor_name SCROLL CURSOR [WITH HOLD] 

	FOR sql_statement 

语法2:使用 已声明的PREPARED ID 来进行 CURSOR 声明


DECLARE cursor_name SCROLL CURSOR [WITH HOLD] 

	FOR prepared_id 

语法3:使用 已知的STRING语句 进行 CURSOR 声明


DECLARE cursor_name SCROLL CURSOR [WITH HOLD] 

	FROM string-expression 

在这里插入图片描述

OPEN 概述

语法:


OPEN cursor_name [USING 变量名称] 

  • 本指令可用 STATUS 来检查是否执行成功

  • 使用 cursor 之前要先 OPEN CURSOR,开启游标

  • 此语句仅决定符合的数据,并不是真正从数据库中抓取数据

示例:


LET g_sql = "SELECT * FROM cta_file WHERE ROWID = ?" 



DECLARE cta_cl CURSOR FROM g_sql 

			:

OPEN cta_cl USING l_ata01 

FETCH 概述

语法:


FETCH cursor_id INTO program_variable 

当声明为 SCROLLING CURSOR 时,可以配合以下移动 Cursor 的指令:

在这里插入图片描述

不同 FETCH 指令下 CURSOR 动作示意图:

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值