tnblog
首页

Oracle使用游标

167人阅读 2018/12/29 10:36 评论:0 收藏
分类: 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;


使用游标更新和删除数据

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


游标配合存储过程使用

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



请先登录

{{item.title}}

{{item.content}}
不能简单的解决问题,那是设计与做法有问题
博主搜索
文章类别
CSS 5篇
云服务 2篇
Git 4篇
.NET 29篇
Android 0篇
软件架构 4篇
.NET Core 15篇
.NET MVC 3篇
英语 3篇
随笔 3篇
Bootstrap 1篇
Redis 12篇
编辑器 2篇
Js相关 6篇
Layui 2篇
Oracle 7篇
Python 2篇
数据库 2篇
EF 2篇
微信 2篇
前端 1篇
消息队列 1篇
最新文章
为什么要使用webapi而不直接使用controller
net core发布到IIS常见错误
net core依赖注入
NET CORE配置EF连接字符串
Net Core使用依赖注入来装载EF的上下文对象
下载net core
Sqlerver添加用户与授权
net core中使用url编码与解码操作
net core启动报错Unable to configure HTTPS endpoint. No server certificate was specified
.net core使用response
ef6动态添加条件
最新评价
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}