zoukankan      html  css  js  c++  java
  • PLSQL 循环游标 cursor loop fetch into【转载】

    PLSQL 循环游标 cursor 的一点心得体会
    编辑 文章分类:数据库
    set serveroutput on---------------打印输出信息,默认是FALSE

    declare --------------------申明变量,分号结束

    v_pages number;
    v_numberPerPage number;
    v_totalPages number;
    v_cur        sys_refcursor;

    diy_id  number;
    diy_name varchar2(50);
    diy_date date;
    cursor c_list is select * from  table_User  i where i.id=4;

    begin
    ----------------给变量初始化值
    v_pages:=1;
    v_numberPerPage:=20;
    --调用的sp,参数分别是pages number 要查询的页数,numberPerPage number 每页显示几条  ,tatalPages number 输出参数,返回结果集总页数 , resultCursor cursor 结果集游标,返回查询结果
    My_Test_SP(v_pages,v_numberPerPage,v_totalPages,v_cur);



    ------------第一种循环游标方式,最简单高效
    for c in c_list loop
    dbms_output.put_line('用户的id='||c.id); -------------输出结果集
    end loop;



    ----------第二种循环游标方式

    open v_cur ------打开游标,但是如果有这代码会提示错误,所以我运行的时候是注释这代码的,很奇怪,不知道什么原因
    loop
    fetch v_cur into diy_id,diy_name,diy_date;-----------这三个参数是My_Test_SP输出的游标参数返回的值,刚好3个字段,如果这里少些任何一个字段,plsql会提示错误,不能少
    exit when v_cur%notfound; ----------定义跳出循环的条件,当每页记录则跳出
    dbms_output.put_line('报表id='||diy_id||',报表名='||diy_name);--------输出结果
    end loop;



    close v_cur;---------关闭游标

    dbms_output.put_line(v_totalPages);

    end;

     --fetch 的例子

        SET SERVERIUTPUT ON  
        DECLARE  
        v_ename EMP.ENAME%TYPE;  
        v_salary EMP.SAL%TYPE;  
        CURSOR c_emp IS SELECT ename,sal FROM emp;  
        BEGIN  
        OPEN c_emp;  
        FETCH c_emp INTO v_ename,v_salary;  
        DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename  
        ||'is'|| v_salary);  
        FETCH c_emp INTO v_ename,v_salary;  
        DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename  
        ||'is'|| v_salary);  
        FETCH c_emp INTO v_ename,v_salary;  
        DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename  
        ||'is'|| v_salary);  
        CLOSE c_emp;  
        END ;
  • 相关阅读:
    3dsmax不同版本 pyside qt UI 设置max窗口为父窗口的方法
    oracle中的数据库和实例
    oracle中的表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)
    什么是WSE
    Server.Transfer,Response.Redirect的区别
    Oracle 中的几个数据类型介绍
    oracle中的连接字符串
    Oracle中的 单引号 和 双引号
    接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
    聚簇索引
  • 原文地址:https://www.cnblogs.com/haibin168/p/1959594.html
Copyright © 2011-2022 走看看