PLSQL 循环游标 cursor loop fetch into
2018-02-03 10:54
399 查看
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 ;
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;-----------(
fetch...into... 是SQL 里面获取游标里的量 用到的 fetch 后是你的游标 into 后是你的变量 exit when 是当什么时候退出。后面加条件
)
这三个参数是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 ;
相关文章推荐
- PLSQL 循环游标 cursor loop fetch into【转载】
- PLSQL 循环游标 cursor loop fetch into
- PLSQL 循环游标 cursor loop fetch into【转载】
- Oracle 'open cursor loop fetch into' and 'for in cursor loop'
- PLSQL入门:cursor传参,loop fetch使用,if使用,单引号字符表示
- oracle_循环loop, 游标cursor
- Oracle PLSQL Demo - 08.定义显式游标[Define CURSOR, Open, Fetch, Close CURSOR]
- Oracle PLSQL Demo - 09.Open、Fetch遍历游标[Open, Fetch, Close Record CURSOR]
- Oracle PLSQL Demo - 10.For Loop遍历游标[FOR LOOP CURSOR]
- Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据
- Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据
- plsql学习:cursor游标使用例子(1)
- SQL Server 中用While循环替代游标(Cursor的解决方案
- 【原创】游标循环loop,while和for…
- SQL Server中用While循环替代游标(Cursor)的解决方案
- Oracle PLSQL Demo - 13.游标的各种属性[Found NotFound ISOpen RowCount CURSOR]
- Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据(转载)
- Mysql创建存储过程,使用游标Cursor循环更新
- [转]SQL Server中用While循环替代游标(Cursor)的解决方案
- SQL Server中用While循环替代游标(Cursor)的解决方案