zoukankan      html  css  js  c++  java
  • Oracle游标总结

    1.声明游标

    declare
    teacher_id number(5);
    teacher_name varchar2(5);
    teacher_title varchar2(50);
    teacher_sex char(1);
    
    cursor teacher_cur is
        select tid,tiname,title,sex from teachers where tid<117;

    2.打开游标

    open 游标名;

    declare
    teacher_id number(5);
    teacher_name varchar2(5);
    teacher_title varchar2(50);
    teacher_sex char(1);
    
    cursor teacher_cur is
        select tid,tiname,title,sex from teachers where tid<117;
    open teacher_cur;

    3.提取游标

    fetch 游标名 into 变量列表

    declare
    teacher_id number(5);
    teacher_name varchar2(5);
    teacher_title varchar2(50);
    teacher_sex char(1);
    
    cursor teacher_cur is
        select tid,tiname,title,sex from teachers where tid<117;
    open teacher_cur;
    fetch teacher_cur into tid,tinme,title,sex;

    4.关闭游标

    close 游标名

    declare
        teacher_id number(5);
        teacher_name varchar2(5);
        teacher_title varchar2(50);
        teacher_sex char(1);
    
    cursor teacher_cur is
        select tid,tiname,title,sex from teachers where tid<117;
    open teacher_cur;
        fetch teacher_cur into tid,tinme,title,sex;
        Loop 
            EXIT WHEN NOT teacher_cur%FUND;
            IF teaher_sex = 'M' THEN
                INSERT INTO MALE_TEACHERS(TID,TNAME,TITLE) VALUES();    
            ELSE 
                INSERT INTO FEMALE_TEACHERS(TID,TNAME,TITLE) VALUES(teacher_id,teacher_name,teacher_title);
            END IF;
        FETCH teacher_cur INTO teacher_id,teacher_name,teacher_title,teacher_sex;
        END LOOP;
    CLOSE teacher_cur;
    END;

    使用显示游标:

    1):使用前用游标名%ISOPEN检查打开状态,只有值为TRUE是才可使用

    2):使用游标每次都要用%NOTFUND,%FUND确认是否返回成功

    3):提取游标时对应变量个数一致

    4):必须关闭游标释放资源


    1.%fund是否找到有效行,是则为true 否则是false

    open teacher_cur;
    fetch teacher_cur into teacher_id,teacher_name,teacher_title,teacher sex;
    loop 
    exit when not teacher_cur%found;
    end loop

      SQL%fund

    delete from teachers
        where tid=teacher_id;
    if SQL%found then
        insert into success values(tid);
    else
        insert into fail values(tid);
    end if;

    2.%NOTFOUND

    OPEN teacher_cur;
    FETCH teacher_cur INTO teacher_id,teacher_name,teacher_title,teacher_sex;
    LOOP
        EXIT WHEN teacher_cur%NOTFOUND;
    END LOOP

      SQL%NOTFOUND

    DELETE FROM TEACHERS
        WHERE TID = teacher_id;
    IF SQL%NOTFOUND THEN
        INSERT INTO FALL VALUES(TID);
    ELSE
        INSERT INTO SUCCESS VALUES(TID);
    END IF;

    3.%ROWCOUNT

    该属性记录了游标抽取过的记录行数,也可以理解为当前游标所在的行号,这个属性在循环判断中有效

    LOOP
        FETCH teacher_our INTO teacher_id,teacher_name,teacher_title,teacher_sex;
        EXIT WHEN teacher_cur%ROWCOUNT=10;--只抽取10条记录
        ...
        END LOOP;

    用FOR语句控制游标的循环,系统隐含的定义了一个数据类型为%ROWCOUNT的记录,作为循环计数器,并将隐士的打开和关闭游标

    FOR teacher_record in teacher_cur LOOP --teacher_record作为记录名,隐含的代开游标teacher_cur
        INSERT INTO TEMP TEACHERS(TID,TNAME,TITLE,SEX) VALUES(teacher_record,tid,teacher_record,tname,teacher_record,title,teacher_record.sex);
    END LOOP

    4.%ISOPEN

    ... ...

    5.参数话游标:

    DECLARE
    --定义游标是带上参数CURSOR_ID
        CURSOR teacher_cur(CURSOR_id NUMBER) IS
            SELECT TNAME,TITLE,SEX FROM TEACHERS WHERE TID=CURSOR_id;--使用参数
    BEGIN
        OPEN teacher_cur(my_tid);--带上参数
        LOOP
            FETCH teacher_cur INTO teacher_name,teacher_title,teacher_sex;
            EXIT WHEN teacher_cur%NOTFOUND;
            ...
        END LOOP;
        CLOSE teacher_cur;
    END;

    特殊的游标类型

    declare  
    r_emp emp%ROWTYPE;   --该类型为emp表中一行的类型  
    cursor c_emp is SELECT * FROM emp ;  
    BEGIN  
      OPEN c_emp;  
      LOOP  
        FETCH c_emp into r_emp;     --游标中查询出来的一行into进定义的变量r_emp中  
        EXIT WHEN c_emp%NOTFOUND;  
        dbms_output.put_line('员工姓名:' || r_emp.ename);     
      END LOOP;  
      CLOSE c_emp;  
    END; 

  • 相关阅读:
    项目范围管理定义范围
    项目时间管理估算活动资源
    项目时间管理排列活动顺序
    强悍!ultraEdit的文本比较
    网页刷流量软件开发中的困惑
    关于淘宝CSV格式的研究
    HTTP session登陆处理与登陆保持
    用ps将自己的图片字节数变最小
    通过TApplicationEvents响应消息
    有的女人就像易语言
  • 原文地址:https://www.cnblogs.com/tingbogiu/p/5639997.html
Copyright © 2011-2022 走看看