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)
说明:通常用于 查询程序,可以 随即抓取资料。
-
通过 DECLARE 定义
-
利用 OPEN 开启该 CURSOR
例:
OPEN test01_cursor -
通过
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 动作示意图:

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


401

被折叠的 条评论
为什么被折叠?



