oracle 游标是怎么回事,有木有一个小例子啊
oracle 游标是怎么回事,有木有一个小例子啊
[解决办法]
-- 声明游标;CURSOR cursor_name IS select_statement
--For 循环游标
--(1)定义游标
--(2)定义游标变量
--(3)使用for循环来使用这个游标
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from emp
where job='MANAGER';
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row c_job%rowtype;
begin
for c_row in c_job loop
dbms_output.put_line(c_row.empno
[解决办法]
'-'
[解决办法]
c_row.ename
[解决办法]
'-'
[解决办法]
c_row.job
[解决办法]
'-'
[解决办法]
c_row.sal);
end loop;
end;
--Fetch游标
--使用的时候必须要明确的打开和关闭
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from emp
where job='MANAGER';
--定义一个游标变量
c_row c_job%rowtype;
begin
open c_job;
loop
--提取一行数据到c_row
fetch c_job into c_row;
--判读是否提取到值,没取到值就退出
--取到值c_job%notfound 是false
--取不到值c_job%notfound 是true
exit when c_job%notfound;
dbms_output.put_line(c_row.empno
[解决办法]
'-'
[解决办法]
c_row.ename
[解决办法]
'-'
------解决方案--------------------
c_row.job
[解决办法]
'-'
[解决办法]
c_row.sal);
end loop;
--关闭游标
close c_job;
end;
[解决办法]
游标你可以理解为一个数据集。跟java的list差不多。把一组数据放入游标中:
cursor curr_list is
select TSK_CD_ID, MDL_BUKT_ID, CTLG_BUKT_ID, expndtr_ctgry_id, tran_id,MGMT_ENTY_ID
from cnfm.cnfm_tran_ln_dtl
where MGMT_ENTY_ID in
(select MGMT_ENTY_ID
from cnfm.cnfm_mgmt_enty
where model_id = model_id
and Gl_Qtr_Desc in (qtr_desc));