PL/SQL中游标的使用

1:游标简介

保存语句执行结果存储区域的指针

用于获取执行结果

2:游标分类

隐式游标:隐式定义的游标

显式游标:显式定义的游标

<2.1>:隐式游标概念

不需要显式定义即可使用的游标

PL/SQL环境进行声明和管理

又被称为SQL游标

专门处理SELECT…INTO, INSERT, DELETE, UPDATE语句

<2.2>:隐式游标的属性

SQL%FOUND: FETCH语句是否获取到了结果

SQL%ISOPEN: 游标是否处于打开的状态

SQL%NOTFOUND: FETCH语句是否没有获取到了结果

SQL%ROWCOUNT: 受语句影响的行数(游标中记录的行数)

事例:

declare
  v_username varchar2(100);
begin
  select 姓名 into v_username from tab_公司员工表 t where t.员工编号 = 'msdadmin' and t.systemid = '079';

  dbms_output.put_line('查询到 ' || SQL%ROWCOUNT || ' 条记录');

  if SQL%FOUND then
    dbms_output.put_line('查询到数据,姓名为:' || v_username);
  else
    dbms_output.put_line('记录未找到');
  end if;

end;

<2.3>:显式游标概念

需要显式定义即可使用的游标

用户进行声明和管理

<2.4>:显式游标操作模型

声明:CURSOR cursor_name[(param type, …)] IS select_statement;

打开: OPEN cursor_name[(parameter)];

获取数据:FETCH cursor_name INTO variable;

关闭:CLOSE cursor_name;

<2.5>:显式游标的属性

%FOUND: FETCH语句是否获取到了结果

%ISOPEN: 游标是否处于打开的状态

%NOTFOUND: FETCH语句是否没有获取到了结果

%ROWCOUNT: 游标中记录的行数

事例1:

declare
  cursor curemp is
    select * from tab_公司员工表 t where t.systemid = '079';
  v_row curemp%rowtype;
begin
  OPEN curemp;
  loop
    FETCH curemp INTO v_row;
    exit when curemp%NOTFOUND;
    dbms_output.put_line(v_row.员工编号 || ' ' || v_row.姓名);
  end loop;

  CLOSE curemp;
end;

事例2:

declare
  cursor curemp is
    select * from tab_公司员工表 t where t.systemid = '079';
begin
  for c in curemp loop
    dbms_output.put_line(c.员工编号 || ' ' || c.姓名);
  end loop;
end;

事例3:带参数游标

declare
  cursor curemp(systemid varchar2) is
    select * from tab_公司员工表 t where t.systemid = systemid;
  v_row curemp%rowtype;
begin
  OPEN curemp('079');
  loop
    FETCH curemp INTO v_row;
    exit when curemp%NOTFOUND;
    dbms_output.put_line(v_row.员工编号 || ' ' || v_row.姓名);
  end loop;

  CLOSE curemp;
end;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值