排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
分类:
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;
结果如下:
使用游标查询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;
结果如下:
游标使用参数
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(满了,可以加,但通过不了),2群:656732739
评价