跟前一篇的 Datastore 類似,但有時候我們並不需要對 datastore 內的數據作改動,只要能取到值就可以了,那我們就可以使用 PB 內的 cursor。對比 datastore ,cursor 會使用到更少的資源,速度更快,也不必單純為了後台運算而多建一個 datawindow,也避開了別人以為沒用而誤把你的 Datawindow 刪掉或修改的風險。
// 定義變量
String ls_student_id, ls_class
Integer li_year
// 班級表
Create table student(
Year int,
Class int,
Student_id varchar(20),
Student_name varchar(20),
Join_date date
)
// 從 sql 語句定義 cursor
declare cur_student cursor for
Select year, class, student_id
From student
Where year = 2020
And class = '5B'
using sqlca;
// 打開並執行sql 語句
open cur_student;
// 取第一行,注意變量順序要跟前面的 sql 語句一致
Fetch cur_student into :li_year, :ls_class, :ls_student_id;
Do while sqlca.sqlcode = 0 // 有數據的話,sqlcode 就是「0」,沒有就是「100」
// 各種運算
…
// 取下一行
Fetch cur_student into :li_year, :ls_class, :ls_student_id;
Loop
// 關閉curosr
close cur_student;