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,一经查实,立即删除!

相关文章

linux下各种颜色文件的意义

linux下各种颜色文件的意义 蓝色表示目录; 绿色表示可执行文件; 红色表示压缩文件; 浅蓝色表示链接文件; 灰色表示其它文件; 红色闪烁表示链接的文件有问题了; 黄色是设备文件,包括block, char, fifo。 用dircolors -p看到缺省的颜色设置,包括各种颜色和…

aix vnc oracle,请问如何配置AIX上的vnc

有人说:但是我的机器上没有ibm850put the following in the vncserver script in the fonts section: (all one line)$cmd . " -fp /usr/lib/X11/fonts/,/usr/lib/X11/fonts/misc/,/usr/ lib/X11/fonts/75dpi/,/usr/lib/X11/fonts/100dpi/,/usr/lib/X11/fonts/ibm850/,/us…

linux 为什么要安装gcc和gcc-c++(又叫做g++)

linux 为什么要安装gcc和gcc-c(又叫做g) gcc-c(又叫做g)是为gcc提供c语言特性支持的 linux上的gcc是Gnu的C语言编译器,至于C编译器,它的名字叫做g。 linux中的gcc是由GNU推出的一款功能强大的、性能优越的多平台编译器。gcc编译器能将C、C语言源程序和目…

Oracle数据库配置方案,oracle数据库各项参数参考配置方案

1 ORACLE软件安装规范 1.ORACLE的HOME目录2 关闭操作系统NUMA 1.是否关闭NUMA3 oracle内存大小 1.sga_max_size2.sga_target3.pga_aggregate_target4 调整连接相关参数 1.processes 2000 12.open_cursors 1000 10003.session_cached_cursors 2005 ONLINE REDO的大小和组数2.每个…

matlab中直到循环语句,Matlab再次执行循环,直到第一条语句结束

想一想写入文件的过程:它会按顺序(通常)将字节从内存复制到存储介质。你要求的是做以下事情(我假设第一个fprintf在随后的调用中写aaa,bbb,ccc,第二个写AAA,BBB,CCC)。aaaAAA - after first passaaabbbAAAB…

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

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

linux内核多大 4.17.8,Linux Kernel 4.17结束支持,请升级到Linux 4.18内核

Linux Kernel 4.17最后一个更新是Linux Kernel 4.17.19内核,该系列内核版本将结束支持,它不会再得到新的更新,请用户把Linux内核升级到4.18版本,这样能避免安全漏洞威胁。Linux kernel 4.17发布背景及重点特性Linux创始人Linus To…

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

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

linux怎么查看内核定义的结构体,Linux如何查找一个结构体的原始定义

下面以查找结构体FILE的原始定义为例:1、我们知道,这些定义一般都在 /usr/include下面,所以首先到达目录 /usr/include 下面2、用grep命令搜索 ,即grep FILE stdio.h,可得以下结果(部分),FILE在stdio.h中定义有好多地方…

关于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…

分页插件PageHelper的使用方法

PageHelper是国内非常优秀的一款开源的mybatis分页插件&#xff0c;它支持基本主流与常用的数据库&#xff0c;例如mysql、 oracle、mariaDB、DB2、SQLite、Hsqldb等。 PageHelper的使用方法 第一步、导包&#xff08;或者导入坐标&#xff09; <!-- https://mvnreposito…

linux nginx http cache时间不对,Linux中Nginx设置proxy_cache缓存与取消缓存-linux-操作系统-壹...

本文章来讲述一下关于Linux中Nginx设置proxy_cache缓存与取消缓存实现方法&#xff0c;有需要的朋友可参考。在配置文件的server{}内&#xff0c;添加这么一句即可&#xff1a;代码如下复制代码location ~ .*/.(css|js)$ {add_header Cache-Control no-store;}在nginx.conf里的…

Cookie与Session相关学习笔记

一.会话技术 会话: 为了实现某一个功能, 浏览器和服务器之间可能会产生多次的请求和响应, 从浏览器访问服务器开始, 到最后浏览器关闭, 这期间产生的多次请求和响应就称之为浏览器和服务器之间的一次会话! 如何来保存会话中产生的数据???~request太小了~ServletContext域太…

linux 网络劫持编程,Linux下实现劫持系统调用的总结(上)--代码及实现

Linux内核版本2.6中已经不再导出系统调用符号表了。因此&#xff0c;如果想实现劫持系统调用&#xff0c;就得想办法找到系统调用表的地址。网上应该可以搜到相关的实现。我这里找到了albcamus兄的精华文章&#xff0c;并在内核版本2.6.18.3上实践了其中的代码。这里总结一下。…

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

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

IllegalStateException: No WebApplicationContext found: no Co

严重: Servlet.service() for servlet Persistent Faces Servlet threw exception java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered? at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingF…

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

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

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

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

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

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