第十二章 使用嵌入式SQL(四)
SQL游标
游标是指向数据的指针,该数据允许嵌入式SQL程序对所指向的记录执行操作。通过使用游标,Embedded SQL可以遍历结果集。嵌入式SQL可以使用游标执行查询,该查询从多个记录返回数据。嵌入式SQL还可以使用游标更新或删除多个记录。
必须首先对SQL游标进行DECLARE,并为其命名。在DECLARE语句中,提供了SELECT语句,该语句标识游标将指向的记录。然后,将此游标名称提供给游标语句。然后,反复发出游标语句以遍历结果集。然后,发出游标语句。
- 基于游标的查询使用
DECLARE游标名称CURSOR FOR SELECT来选择记录,并(可选)将列值返回到输出主机变量中。 语句遍历结果集,使用这些变量返回选定的列值。
- 基于游标的或使用游标名选择操作的记录。没有指定输出主机变量。 语句遍历结果集。 或语句包含子句,以标识当前光标位置,以便对所选记录执行操作。
请注意,游标不能跨越方法。因此,必须在同一类方法中声明,打开,获取和关闭游标。在生成类和方法的所有代码(例如从.CSP文件生成的类)中考虑这一点很重要。
下面的示例使用游标执行查询并将结果显示给主体设备:
/// d ##class(PHA.TEST.SQL).CURSOR()
ClassMethod CURSOR()
{
&sql(DECLARE C5 CURSOR FOR
SELECT %ID,Name
INTO :id, :name
FROM Sample.Person
WHERE Name %STARTSWITH 'A'
ORDER BY Name
)
&sql(OPEN C5)
QUIT:(SQLCODE'=0)
&sql(FETCH C5)
While (SQLCODE = 0) {
Write id, ": ", name,!
&sql(FETCH C5)
}
&sql(CLOSE C5)
}