-- 声明游标;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;
--(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;
游标在数据库中的作用是什么?什么时候会用到游标呢?
c_row c_job%rowtype;
这句话是定义一个游标变量吧, c_row 是什么?c_job看上面是游标吧 %rowtype又是什么? 在java中 定义一个变量 是int 数据类型 a 变量名 然后初始化 游标 是怎么定义变量的
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));
需要对批量数据单独处理,
实际写sql应该尽量避免使用,
效率比批量处理的sql低
游标在数据库中的作用是什么?什么时候会用到游标呢?
c_row c_job%rowtype;
这句话是定义一个游标变量吧, c_row 是什么?c_job看上面是游标吧 %rowtype又是什么? 在java中 定义一个变量 是int 数据类型 a 变量名 然后初始化 游标 是怎么定义变量的
游标的作用是返回结果集数据。当需要返回结果集数据的时候需要使用游标。
c_row 是c_job游标的变量。%rowtype是对这个变量行进行的定义,意思是返回行的数据类型与emp
表里面的数据类型一致,当emp表里面数据类型改变后,该游标里面的数据类型也跟着改变。
还有好多种,这里就没有贴出来了。游标使用一:
declare
cursor mycur is --声明游标
select * from a;
myrec a%rowtype; --声明与表字段相同的记录
begin
open mycur;--打开游标
fetch mycur into myrec;
while mycur%found loop
dbms_output.put_line(myrec.col1||':'||myrec.col2);
fetch mycur into myrec;
end loop;
close mycur;
end;
/
游标使用二: 使用参数
declare
cursor mycur(id varchar) is
select col2 from a where col1=id;
myrec a.col2%type;
begin
open mycur('1');
loop
fetch mycur into myrec;
exit when mycur%notfound;
dbms_output.put_line(myrec);
end loop;
close mycur;
end;
/