oracle语句块 游标,Oracle使用游标

其实游标就是把查询的结果放入游标中,然后在去游标里边读取。相当于使用游标做了一个中转,而游标是可以作为参数进行传递的,所以游标可以在存储过程中起来数据集的桥梁作用。

游标介绍

1、游标是在内存中开辟的一块区域。

2、游标通过select语句确定从数据库中读取数据的记录集。

3、通过打开(Open)语句把确定的记录集读入到游标开辟的内存区。

4、游标又充当指针的作用。通过执行fetch语句向下移动指针,同时把指针所指的行数据赋给指定的变量中。

5、通过close语句关闭数据库,并释放游标所占的内存区。

使用游标的一般步骤

1、定义一个游标,也就是申明一块内容地址

注意游标只能使用is,不能使用as

2、给游标关联一个sql语句

3、使用open打开游标,就会执行sql语句,把集合放入内存

4、循环使用fecth去读取游标的内容放入变量中

5、关闭游标,释放内存资源

使用游标查询emp表中的ename与sal字段declare cursor cursor_emp --1:定义游标

is

select ename,sal from scott.emp where deptno = 20;--2:给游标关联一个sql语句

v_ename scott.emp.ename%type; --定义一个和emp表中ename字段一样的遍历

v_sal  scott.emp.sal%type;  --定义一个和emp表中sal字段一样的遍历

begin

open cursor_emp; --3:打开游标

loop

fetch cursor_emp into v_ename,v_sal;--4:使用fecth去读取游标的内容放入变量中

exit when cursor_emp%notfound; --退出条件:当游标读取完内容时退出

dbms_output.put_line(v_ename||':'||v_sal);

end loop;

close cursor_emp;--5、关闭游标,释放内存资源

end;

结果如下:

06b137b8710cd73bf903a2b495429c06.png

使用游标查询emp表中所有的字段

其实就是直接查询所有字段

然后使用scott.emp%rowtype;取一个整行的数据类型就行了declare cursor cursor_emp --1:定义游标

is

select * from scott.emp where deptno = 20;--2:给游标关联一个sql语句

v_row scott.emp%rowtype; --定义一个和emp表中行一样的数据类型

begin

open cursor_emp; --3:打开游标

loop

fetch cursor_emp into v_row;--4:使用fecth去读取游标的内容放入变量中

exit when cursor_emp%notfound; --退出条件:当游标读取完内容时退出

dbms_output.put_line(v_row.ename||':'||v_row.sal||':'||v_row.job);

end loop;

close cursor_emp;--5、关闭游标,释放内存资源

end;

结果如下:

776656daf42333699f652d202f8dbaa9.png

游标使用参数declare cursor cursor_emp(p_deptno number) --1:定义游标

is

select * from scott.emp where deptno = p_deptno;--2:给游标关联一个sql语句

v_row scott.emp%rowtype; --定义一个和emp表中行一样的数据类型

begin

open cursor_emp(20); --3:打开游标,传递参数

loop

fetch cursor_emp into v_row;--4:使用fecth去读取游标的内容放入变量中

exit when cursor_emp%notfound; --退出条件:当游标读取完内容时退出

dbms_output.put_line(v_row.ename||':'||v_row.sal||':'||v_row.job);

end loop;

close cursor_emp;--5、关闭游标,释放内存资源

end;

使用游标更新和删除数据

非常忙空了在写┭┮﹏┭┮

游标配合存储过程使用

超级忙空了在写┭┮﹏┭┮

欢迎加群讨论技术,群号:677373950

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值