jxq
作者jxq·2021-03-29 19:31
其它·gbase

SQL调用层接口标准入门(六)执行SQL语句的例程(下)

字数 1477阅读 1160评论 0赞 0

(一)SQL调用层接口标准概述
(二)SQL调用层接口例程
(三)分配和释放资源的例程
(四)控制与SQL服务器连接的例程
(五)执行SQL语句的例程(上)

(六)执行SQL语句的例程(下)

执行<dynamic select statement>或<dynamic single row select statement>时,隐含地声明和打开CLI准备的游标。与分配的SQL语句相关联的游标名属性确定该游标名,可由SQL调用层接口应用程序使用例程SetCursorName提供。如果SQL调用层接口应用程序未提供游标名,则与分配的SQL语句相关联的游标名属性值为依赖实现的游标名。使用GetCursorName例程可检索与分配的SQL语句相关联的游标名属性。声明和打开CLI游标时,分配的SQL语句的三个属性分别决定CLI准备的游标的操作灵敏性属性、操作可滚动性属性和操作持久性属性。SQL调用层接口应用程序可使用SetStmtAttr例程设置这些属性值,也可使用GetStmtAttr例程检索这些属性的当前值。CLI准备的游标的操作可返回性属性由实现定义。

Fetch例程和FetchScroll例程用于定位行上打开的CLI游标,以及检索该行绑定列值。在指定的CLI描述符区中绑定列的目标规范定义目标值位置。Fetch例程始终定位于下一行上打开的CLI游标,而FetchScroll例程可以用于定位任意行上打开的CLI游标。Fetch例程和FetchScroll例程还可在单次调用中检索多行,检索的行集合称为“行集”。单行访存知识多行访存的特例,其行集大小为1。

使用GetData例程可单独检索未绑定列的值。GetData例程还能逐一检索字符和二进制串列的值。CLI游标的当前行是当前行集的一行,由与CLI游标相关联的分配的SQL语句属性指示。执行<preparable dynamic delete statement: positioned>或<preparable dynamic update statement: positioned>可分别删除或更新当前行。CloseCursor例程能关闭CLI游标。

作为调用Execute例程或ExecDirect例程的结果,结果集可返回到SQL调用层接口应用程序,提供语句句柄,其当前语句为<call statement>。如果<call statement>调用SQL调用过程,返回非空结果集序列,则CLI过程结果游标自动与语句句柄相关联。此CLI过程结果游标的结果集是结果集序列的第一个结果集。通过调用NumResultCols,SQL调用层接口应用程序可知道游标是否已自动打开。如果结果集序列中有多个结果集,则既可逐个处理也可并行处理其他结果集。要逐个处理结果集,一旦处理完给定结果集,就使用MoreResults例程确定是否还有其他结果集,如果还有,就将CLI过程结果游标定位于下一结果集中第一行之前。要并行处理结果集,使用NextResult例程确定是否还有其他结果集,如果还有,则将与另一语句句柄相关联的CLI过程结果游标定位于下一结果集中第一行之前。

CLI过程结果游标与结果集相关联时,CLI过程结果游标的操作灵敏性属性、操作可滚动性属性和操作持久性属性是从存储过程检索的结果集的那些属性。CLI过程结果游标的操作可返回性属性由实现定义。CLI过程结果游标不可更新。除此以外,CLI过程结果游标的处理方式与CLI准备的游标相同。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广