• day12_游标


    1、游标:用来处理从数据库中检索的多行记录(使用SELECT语句),通过遍历游标,我们可以对访问到每行记录的数据,并通过游标取出值,从而进行操作。 


    2、游标有什么用?
     ①指定结果集中特定行的位置。 
     ②基于当前的结果集位置检索一行或连续的几行。   
     ③直接利用游标更新数据,直接引用表中的行。 
     ④可以以编程的方式访问数据库。



    3、游标分类

    显示游标(Explicit Cursor):在PL/SQL程序中明确定义的,用于查询的游标称作显示游标。 
    隐式游标(Implicit Cursor):没有PL/SQL程序中定义的,使用update/DELETE语句时,Oracle系统自动分配的游标。 


    4、使用步骤 

    显示游标:(1)定义 (2)打开 (3)使用 (4)关闭 
    隐式游标:对于隐式游标的操作,如定义、打开、取值及关闭操作,都由ORACLE 系统自动地完成,无需用户进行处理。


    set serveroutput on



    (1)
    create or replace PROCEDURE PROC_EMP1 AS
    begin
      declare
        cursor cur_emp is  select empno, ename from emp order by empno; --1.定义游标,名称为cur_emp 
        v_empno varchar2(4); --定义变量,存放游标取出的数据 
        v_ename varchar2(10);
      begin 
        open cur_emp; --2.打开游标cur_emp 
        fetch cur_emp into v_empno, v_ename; --3.将游标的当前行取出存放到变量中 
        while cur_emp%found --游标所指还有数据行,则继续循环 
         loop 
          dbms_output.PUT_LINE('员工号:'||v_empno || '   '||'员工姓名:'|| v_ename); --打印结果 
          fetch cur_emp
            into v_empno, v_ename; --继续将游标所指的当前行取出放到变量中 
        end loop;
        close cur_emp; --4.关闭游标 
      end;
    end PROC_EMP1;
    /




    (2)
    create or replace PROCEDURE PROC_EMP2 AS
    begin
      update emp set ename = '张燕广' where empno = '1111'; --隐式游标使用 
      if SQL%NOTFOUND then
        --如果更新没有匹配则插入一条新记录 
        insert into emp (empno, ename, SAL, COMM) values ('1111', '张燕广', 555, 666);
        dbms_output.PUT_LINE('没有找到 张燕广,在表中新增了一条记录'); --打印提示 
        commit;
      end if;
      commit;
    end PROC_EMP2;
    /






    5,Oracle游标的状态有哪些,怎么使用游标属性?

      %Found :Fetch语句(获取记录)执行情况True or False。
      %NotFound : 最后一条记录是否提取出True or False。
      %ISOpen : 游标是否打开True or False。
      %RowCount :游标当前提取的行数 。
      
      
    begin
    update emp Set  SAL = SAL + 100  Where JOB = 'CLERK';
    if  SQL%Found  Then
    DBMS_OUTPUT.PUT_LINE('找到记录,修改成功!');
    else
    DBMS_OUTPUT.PUT_LINE('没有到记录,修改未成功!');
    end if;
    commit;
    end;  
    /




  • 相关阅读:
    工厂模式
    将博客搬至CSDN
    网络安全-跨站脚本攻击XSS(Cross-Site Scripting)
    Linux 权限
    git常用的语句
    git代码提交与克隆
    git学习
    Mybatis常见问题
    关于集合常见的问题
    远程连接(加密验证问题解决)
  • 原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/a75ea471874c8275eae8a9179fd677c4.html
Copyright © 2020-2023  润新知