zoukankan      html  css  js  c++  java
  • Oracle游标cursor1基础和隐式游标

    --指向表行的指针,一次一行,一般向前移动 Resultset
    --游标永远代代表的是一行数据。
    /*
    使用步骤
    第一步:声明游标,就像是声明一个变量样。
            游标的关键字就是cursor.
            Declare
                --游标关键字在前面
                Cursor  myCusor is select * from someTable;
            Begin
                    //代码
            End;
    
     第二步:声明游标后并不能直接使用-打开游标
            Declare
                --游标关键字在前面
                Cursor  myCusor is select * from someTable;
            Begin
                    Open myCursor;    
            End;
    第三步:在遍历中,使用fetch遍历数据
            Declare
                --游标关键字在前面
                Cursor  myCusor is select * from someTable;
            Begin
                    Open myCursor;    
                    Loop
                        Fetch myCusor into 你声明的变量;
                        --加上一个判断,是否到了行了最后
                        Exit when myCursor%notfound;
                    End loop;
            End;
    第四步:关闭游标
            Declare
                --游标关键字在前面
                Cursor  myCusor is select * from someTable;
            Begin
                    Open myCursor;    
                    Loop
                        Fetch myCusor into 你声明的变量;
                        --加上一个判断,是否到了行了最后
                        Exit when myCursor%notfound;
                    End loop;
                    Close myCursor; - oracle默认情况下,最多只可以开15个游标。
            End;
    
    */
    
    /*
    游标的分类
    声明方式:
    隐式游标
            所有你在执行sql(CRUD)语句时,oracle都会默认的给你打开一个游标。
            游标名称叫SQL
                它包含以下属性:
                   ROWCOUNT – 这个查询或是修改的记录的数量。
                   Notfound没有发行现
                    
    显式游标
                是指用户在declare中显式声明的游标。
        动态的游标
    */
    --隐式的游标
    select * from EMP1;
    /*
    30
    30
    39
    200*/
    declare
    v_count int;
    v_found boolean;
    begin
    DELETE from emp1 where age=30;
    --获取行号
    v_count:=sql%rowcount;
    if not sql%isopen then
    SYS.DBMS_OUTPUT.PUT_LINE('xxxx数');
    end if;
    DBMS_OUTPUT.PUT_LINE('影响行数'||v_count);
    end;
    /*
    匿名块已完成
    xxxx数
    影响行数2
    */
  • 相关阅读:
    多进程要时刻当心的点
    pairs和ipairs用的迭代器不一样
    #pragma pack(push,1) & #pragma pack(pop)
    负数取模不一定是正数
    切记一定要get~
    GAME有计时器,大厅没有计时器的原因
    每天一个linux命令(1):ls命令
    服务端发的某个short字段存到buf里是正值,存完在看就是0的问题
    生成函数&多项式全家桶导学案
    [Z]董的博客数据结构与算法汇总
  • 原文地址:https://www.cnblogs.com/xiaweifeng/p/3681434.html
Copyright © 2011-2022 走看看