浅谈GBase 8s数据库游标

原文链接:

https://www.gbase.cn/community/post/3982

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

在数据库编程中,处理复杂的数据集是一项常见任务。游标(CURSOR)作为数据库操作中的一项重要工具,允许我们逐行处理查询结果,极大地提升了数据处理的灵活性和效率。本文将深入探讨游标的概念、类型、属性以及在实际编程中的应用。

一、游标的概念

游标(CURSOR):游标是把从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作。

游标是用在plsql块中的!!!!(declare..begin..end; procedure)

通俗解释:数据库中,没有数组或集合的概念,所以如果储存多个结果集呢?使用游标!

select * from user;  如使用游标储存该结果集

游标基本原理:逐行处理查询结果,以编程的方式访问数据

二、游标的作用

游标是用来处理使用SELECT语句从数据库中检索到的多行记录的工具。借助于游标的功能,数据库应用程序可以对一组记录逐条进行处理,每次处理一行。

三、游标的类型

  • 显式游标(Explicit Cursor):显式游标需要定义声明,在使用前要打开和获取,使用完毕后要关闭。多用于返回多行的SELECT语句
  • 隐式游标(Implicit Cursor):在执行一个SQL语句时,服务器将自动创建一个隐式游标,该游标是内存中的工作区,存储了执行SQL语句的结果,可通过游标的属性获得SQL的执行结果及状态信息。多用于只返回一行的SQL语句。

四、游标的主要属性

  • %FOUND 布尔型属性,当SQL语句至少影响一行时为TRUE,否则为FALSE
  • %NOTFOUND 布尔型属性,当SQL语句没有影响的行时为TRUE,否则为FALSE
  • %ISOPEN 布尔型属性,当游标已打开时返回TRUE,否则为FALSE(对用户而言,隐式游标永远是false)
  • %ROWCOUNT 数字型属性,返回受到SQL影响的行数

(ORACLE在创建隐式游标时,默认的游标名为SQL)

注意:

 属性名与游标名之间没有空格。

 游标的属性只能在PL/SQL块中使用,而不能在SQL语句中使用

例: 将PRODUCTS表中类型为1的所有产品的单价打9折,并显示该更新所影响的行数.

BEGIN
   UPDATE products
   SET  unitprice=unitprice*0.9
   WHERE categoryid=1;
   IF SQL%FOUND THEN
      dbms_output.put_line('更新了'||SQL%ROWCOUNT||'条记录');
  ELSE
      dbms_output.put_line('没有更新记录');
  END IF;
END;

上面是隐式游标

1、显示游标

1、定义游标

在使用显示游标之前,必须先在声明部分定义游标,

其定义语法如下:

CURSOR cursor_name[(parameter,…)] IS select_statement; 

说明: 参数parameter形式如下:para_name [IN] data_type [:=|DEFAULT value]

2、打开游标

当打开游标时,ORACLE会执行游标所对应的SELECT语句,并将结果存放到结果集,

其定义语法如下:

OPEN cursor_name[(parameter,…)];

3、提取数据

FETCH 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值