oracle创建多个游标,Oracle——游标的创建和使用

游标

SQL语言是面向集合的,是对指定列的操作。如果要对列中的指定行进行操作,就必须使用游标。

当在PL/SQL块中执行查询语句(SELECT) 和数据操纵语句(DML) 时,Oracle会为其分配一个上下文区(Context Area)

游标是指向上下文区的指针,它为应用提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法

显式游标

游标分为显式游标和隐含游标两种

隐含游标用于处理SELECT INTO和DML语句

显式游标则用于处理S ELECT语句返回的多行数据

使用显式游标

定义游标

CURSOR cursor_ name IS select statement;

打开游标

OPEN cursor name;

提取数据

FETCH cursor_name INTO variable1,variable...;

FETCH cursor_name bulk collect into collect1..;

关闭游标

CLOSE cursor name;

代码:

--创建游标

declare

cursor 游标名称 is select * from表名;

变量名 表名%rowtype;begin

open 游标名;--打开游标

loopfetch 游标名 into 变量名;--提取游标

exit when 游标名%notfound;

dbms_output.put_line(变量名.列名);endloop;close 游标名;--关闭游标

end;

显示游标属性

显式游标属性用于返回显式游标的执行信息

游标属性使用格式为: 游标名+ 属性名

%ISOPEN

用于确定游标是否已经打开。如果游标已经打开,则返回值为TRUE; 否则返回FALSE

%FOUND

检查是否从结果集中提取到数据。如果提取到数据,则返回值为TRUE; 否则返回FALSE

%NOTFOUND

与%FOUND属性恰好相反,如果提取到数据,则返回值为FALSE; 否则返回TRUE

%ROWCOUNT

返回到当前行为止已经提取到的实际行数

参数游标

参数游标是指带有参数的游标。在定义了参数游标之后,使用不同参数值多次打开游标可以生成不同的结果集。

代码:

--参数游标

declare

cursor cursor_wxn(x_empno number)--定义参数(形参)

is

select * from emp where empno=x_empno;

v_name emp%rowtype;begin

open cursor_wxn(7369);--(实参)

loopfetch cursor_wxn intov_name;exit when cursor_wxn%notfound;

dbms_output.put_line(v_name.ename);endloop;closecursor_wxn;end;

游标for循环

游标for循环是在pl/sql块中使用游标的最简单方式,它可以简化对游标的处理。当使用游标for循环时,oracle会隐含的打开游标,提取游标数据并关闭游标。

代码:

--游标for循环

declarev_name emp%rowtype;cursorcursor_wxnis

select * fromemp;begin

for v_name incursor_wxn loop

dbms_output.put_line(v_name.ename);endloop;end;

上面代码中无须进行取值和关闭的操作,游标for循环可以自己进行。

下面还有一个更为简单的游标for循环,参考上面的代码进行读阅:

--简单for

begin

for v_name in (select * fromemp) loop

dbms_output.put_line(v_name.ename);endloop;end;

使用游标变量

484f92664298bedfda509756d6502e48.png

代码实例:

declaretype youbiao_bianliangis ref cursor;--变量类型

cursor_varisble youbiao_bianliang;--定义游标类型的变量

v_name emp%rowtype;--变量

begin

opencursor_varisblefor select * from emp where empno=7788;

loopfetch cursor_varisble intov_name;exit when cursor_varisble%notfound;

dbms_output.put_line(v_name.ename);endloop;closecursor_varisble;end;

隐含游标

作用:用属性进行一些判断(一种判断方式)

含义:当执行一条DML语句或者SELECT...INTO语句时,都会创建一个隐含游标。

隐含游标的名称是SQL,不能对SQL游标显示执行OPEN、FETCH和CLOSE语句。

Oracle隐式地打开、提取,并总是自动地关闭SQL游标。

属性:

SQL%FOUND:只有DML语句影响一行或多行时,SQL%FOUND属性才返回true。

SQL%NOTDOUND:如果DNL语句没有影响行数,此属性将返回false。

SQL%ROWCOUNT:返回DML影响的行数,如果DML语句没有影响行则返回0.

SQL%ISOPEN:此属性用于判断SQL游标是否已经打开。在执行SQL语句之后,Oracle自动关闭SQL游标,所以隐含游标的SQL%ISOPEN属性始终为false。

简单示例1:

--隐含游标

begin

delete from emp where empno=1;if sql%notfound thendbms_output.put_line('找不到记录');elsedbms_output.put_line('记录');end if;end;

示例2:

declareanumber:=1;begin

delete from emp where empno=a;if sql%notfound thendbms_output.put_line('没有改变');elsedbms_output.put_line('改变');end if;end;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Jedis连接远程服务器的redis

使用Jedis连接远程服务器的redis 1.修改服务器提供商的安全组规则,开放6379端口 2.修改服务器的防火墙规则,开放6379端口(CentOS7) 命令如下: # 查看firewall服务状态 systemctl status firewalld # 开启、重启、关闭、firewalld.service…

远程连接redis遇到的一些错误解决办法JedisConnectionException:java.net.SocketTimeOutException...JedisDataException:D

一些错误解决办法 开放redis端口的防火墙 继续尝试运行 报错的意思是说redis在保护模式下运行,需要去掉保护。 第一种:直接去掉自我保护(不推荐) (redis3.2版本后新增protected-mode配置,默认是yes,即开…

关于Redis配置主从复制踩到的坑,主机不显示从机的连接信息

关于Redis配置主从复制踩到的坑!!! 设置单机集群的时候,两台从机都显示连接到主机,但是主机显示连接到的从机数量为0: 主机信息: 从机80: 从机81: 查看从机log日志文件发现错误信息…

linux内核计算list的长度,Linux内核通用链表 linux/list.h阅读

#ifndef _LINUX_LIST_H#define _LINUX_LIST_H   //宏定义,不做过多解释,就是检查是否包含了linux/list.h#ifdef __KERNEL__#include #include #include /** These are non-NULL pointers that will result in page faults* under normal circumstance…

分析Spring容器启动流程 Spring初始化

分析Spring容器启动流程 Spring初始化 每当启动Web容器时(例如Tomcat),会读取Web应用中的web.xml文件。以下这段代码就是启动Spring容器的关键代码。 ContextLoaderListener 类继承了ContextLoader,实现 了ServletContextListen…

linux 喂狗时间,狗狗正确喂食时间表,喂狗最佳时间指南

未满3月龄的狗狗,每天的早、晚餐分别在7~8点与19~20点喂食,期间每隔3~4小时再喂一次。未满6月龄的狗狗,7~8点喂早餐,12~13点喂午餐,19~20点喂晚餐…

帮帮忙—ssm框架中,简单自定义标签SimpleTagSupport如何注入spirng中的bean

权限太多,想用简单自定义标签来控制,但遇到一个头疼的问题,不能用autowird自动注入spring管理的bean,让人恼火; 经过周折,终于解决问题,与大家一起分享,可能不是最好的方法&#xf…

linux连接svn上代码,代码管理平台介绍、安装svn、客户端上使用svn(linux)、客户端上使用svn(windows)...

代码管理平台介绍代码管理平台介绍--svn版本控制,记录若干文件内容变化,以便未来查阅特定版本修订状况.好比某一个业务,须要不断更新,好比产品经理这周提交了产品新的需求,改动了一些代码,咱们把新的代码上…

Spring初始化:org.springframework.we...ContextLoaderListener的作用

Spring初始化&#xff1a;org.springframework.web.context.ContextLoaderListener的作用 在web.xml种这样配置 <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>ContextLoaderList…

Linux统一编程接口,restful接口设计规范总结

一、重要概念&#xff1a;REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。Resource(资源) &#xff1a;对象的单个实例。 例如&#xff0c;一只动物。它可以是一段文本、一张图片、一首歌曲、一种服务&#xff0c;总之就是一…

重写hashcode和equals方法

一。前言 我们都知道&#xff0c;要比较两个对象是否相等时需要调用对象的equals()方法&#xff0c;即判断对象引用所指向的对象地址是否相等&#xff0c;对象地址相等时&#xff0c;那么与对象相关的对象句柄、对象头、对象实例数据、对象类型数据等也是完全一致的&#xff0…

js中遇到的一个错误Uncaught SyntaxError: missing )after argument list

报的错误如下&#xff1a; 代码&#xff1a; 解决&#xff1a; 加上引号即可。

c语言第六次实验报告,第一年C语言实验报告6列

成都理工大学计算机工程学院“编程基础”实验报告1. 实验目的(1)精通一维数组. 二维数组的定义&#xff0c;初始化以及输入和输出方法(2)掌握字符数组和字符串函数的使用(3)掌握与数组有关的常用算法2. 实验内容(1)在给定的字符串中找到指定的字符&#xff1b;要求:①通过直接初…

IDEA中maven的Plugins报红解决方法

IDEA中maven的Plugins报红解决方法 Idea中maven的Plugins报红解决方法 我的maven项目中plugins下的所有文件都报红&#xff0c;查看报错&#xff0c;这是Maven中plugins没有存入本地的仓库&#xff0c;点击Settings查看Build&#xff0c;Execution…》》Build Tools》》Maven》…

JavaScript 中的 window onload 应该什么时候写

JavaScript 中的 window onload 应该什么时候写 1. 页内式 JS 代码 1.1 页内式 JS 代码写在 head 内部 如果 script 标签写在 head 标签内部&#xff0c;则位于 body 内的元素将晚于 JS 代码加载&#xff0c;那么其中一些获取 DOM 元素的方法将无法取得元素&#xff08;返回 …

android歌词效果,自定义View:Android歌词控件

TicktockMusic 音乐播放器项目相关文章汇总&#xff1a;简介之前做 TicktockMusic 音乐播放器&#xff0c;一个必要的需求肯定是歌词&#xff0c;在 github 上找了几个&#xff0c;发现或多或少都有点不满足需求&#xff0c;所以就自己动手写了一个&#xff0c;本篇文章主要介绍…

IDEA项目中 target 目录的作用

IDEA项目中 target 目录的作用 target是idea默认的编译路径&#xff0c;用来存放项目的&#xff1a;文件和目录、jar包、war包、class文件等。

bc8android汽车中控屛功能有哪些,丰田酷路泽中控台的8大功能 你们知道都是干什么用的?...

兰德酷路泽(参数|图片)中控台的8大功能 ①&#xff1a;高低速四驱调节高低速四驱调节系统&#xff0c;有着两个方向&#xff0c;L4和H4H4&#xff0c;指的是高速四驱&#xff0c;开启H4的时候适合走沙石路面&#xff0c;泥泞路面&#xff0c;雪地&#xff0c;沙石地等。最高车速…

微服务和分布式的区别

微服务和分布式的区别 1.分布式 将一个大的系统划分为多个业务模块&#xff0c;业务模块分别部署到不同的机器上&#xff0c;各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。 上面&#xff1a;service A、B、C、D 分别是业务组件&#xff…

android studio break,Android Studio IDE: Break on Exception

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效&#xff0c;请关闭广告屏蔽插件后再试):问题:It seems my Android Studio does not want to break on any exception by default. Enabling break on "Any Exception" starts breaking within act…