人大金仓数据库KingbaseES 隐式、显式游标介绍

金仓数据库KingbaseES隐式、显式游标

关键字:

KingbaseES、CURSOR、隐式游标、显式游标、人大金仓

游标

游标是指向私有SQL区域的指针,该区域存储有关处理特定SQL语句或PL/SQLSELECTINTO语句的信息。

游标的分类

根据创建者分为隐式游标和显式游标:

由系统创建并管理的游标是隐式游标。由用户创建并管理的游标是显式游标。

隐式游标

每次运行SELECT或DML语句时,PL/SQL都会打开一个隐式游标。注意的是,隐式游标是无法控制的,但可以从其属性中获取信息。

隐式游标属性值的语法是SQL%attribute(因此,隐式游标也称为SQL游标。)。SQL%attribute总是指最近运行的SELECT或DML语句。如果没有运行这样的语句,则SQL%attribute的值为NULL。隐式游标在其关联语句运行后关闭。但是,在另一个SELECT或DML语句运行之前,它的属性值仍然可用。最近运行的SELECT或DML语句可能在不同的范围内。要保存属性值以供以后使用,请立即将其分配给局部变量。否则,其他操作(例如子程序调用)可能会在您测试之前更改属性的值。

隐式游标属性:

  • SQL%ISOPEN 属性:游标是否打开?
  • SQL%FOUND 属性:是否有任何行受到影响?
  • SQL%NOTFOUND 属性:没有行受到影响?
  • SQL%ROWCOUNT 属性:有多少行受到影响?
  • SQL%BULK_ROWCOUNT(请参阅 获取受 FORALL 语句影响的行数 )
  • SQL%BULK_EXCEPTIONS(请参阅 FORALL 语句完成后处理 FORALL 异常 )

这些属性当中:

SQL%ISOPEN 属性总是是为false。因为隐式游标在select语句或者DML语句后会立即自动关闭,所以总是返回false。

示例演示:

SQL%FOUND 属性和SQL%NOTFOUND 属性的返回值是逻辑反义词。

示例演示:

SQL%ROWCOUNT:

如果没有运行 SELECT 或 DML 语句,则为 NULL

否则,SELECT 语句返回或受 DML 语句影响的行数(整数)

示例演示:

SQL%ROWCOUNT这个隐式游标属性一般用于确定已删除的行数。

SQL%BULK_ROWCOUNT也是现实影响的行数但是和SQL%ROWCOUNT的区别在于,他显示的是每个delete所影响的行数,而SQL%ROWCOUNT则是显示最后影响的总行数。将一个执行块中所有的SQL%BULK_ROWCOUNT相加就是SQL%ROWCOUNT。

示例演示:

显式游标

显式游标是用户构建和管理的会话游标。必须声明并定义一个显式游标,为其命名并将其与查询相关联(通常,查询返回多行),然后可以通过以下任一方式处理查询结果集:

  • 打开显式游标(使用OPEN语句),
  • 从结果集中获取行(使用FETCH语句),
  • 然后关闭显式游标(使用CLOSE语句)。
  • 在游标FOR LOOP语句中使用显式游标

值得注意的是: 不能为显式游标赋值、在表达式中使用它,或者将其用作正式的子程序参数,但是可以使用游标变量来执行这些操作。

显示游标的声明和使用已经在上一次《产品能力&实现原理-金仓数据库KingbaseES 游标介绍》这个文档中进行了详细的介绍,这里不再过多的赘述。

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值