PLSQL中的光标游标

光标/ 游标

就是一个结果集

CURSOR  光标名 [(参数名  数据类型[,参数名 数据类型])]   -- 参数可有可无
IS SELECT 语句;

Cursor c1 is select ename where emp

使用之前 需要 open c1; (打开光标)
使用完了 需要 close c1; (关闭光标)

从光标中 取一行关键字 fetch
Fetch c1 into pename; (取一行到变量中)

Fetch 的作用

  1. 把当前指针指向的记录返回
  2. 将指针指向下一条记录

光标的属性

  • 如果这个found能取到数据这个found就是true 否则就是false
    %found

  • 与上面相反
    %notfound

  • 判断光标是否打开
    %isopen

  • 影响的行数 不是总行数 (已经取走的数)
    %rowcount

光标数量的限制
默认的情况下 oracle 数据库只允许打开到 300个光标
修改光标数的限制
alter system set open_ cursors =400 scope=both;
scope 的取值 both,memory,spfile
memory:只更改当前实例 不更改参数文件
spfile: 只更改参数文件,不更改实力 数据库需要重启
both:以上两个同时做

查询并打印员工的姓名和薪水

 Declare
    Cursor cemp is select ename,sal from emp;   (cemp 代表所有姓名薪水的集合)
--建议写完上面后立即为光标定义对应的变量
 Pename emp.ename%type
 Psal emp.esal%type;

Begin 
  --打开光标
    Open cemp;
       Loop
        --取一条记录
        Fetch cemp into pename,psal;
        --fetch不一定能取到
       Exit when cemp%notfound;(没有取到记录时为true--打印
Dbms_output.put_line(pname)
       End  loop;

带参数的光标

Cursor  cemp(dno number) is select ename from emp where deptno = dno;
 Begin 
Open cemp(20);
Loop

事务隔离性
对于oracle
Plsql 要考虑事务隔离性

Oracle
默认隔离级别是 read committed
事务的ACID 原子性 一致性 隔离性 持久性
在oracle中 若对于数据有更改的则需要
Commit;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值