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 ;
總結
以上是生活随笔為你收集整理的PLSQL 循环游标 cursor loop fetch into的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32开发 -- 开发环境搭建
- 下一篇: 日常生活小技巧 -- 网络调试助手