Oracle入门(十四.13)之带参数的游标

一、带参数的游标

    参数是一个变量,其名称用于游标声明中。 当游标打开时,参数值被传递给Oracle服务器,Oracle服务器使用它来决定要将哪些行检索到光标的活动集中。

    这意味着您可以在块中多次打开和关闭显式光标,或者在同一个块的不同执行中打开和关闭显式光标,每次都返回一个不同的活动集。

    考虑将任何region_id传递给游标的示例,并返回该区域中国家/地区的名称。

例子

DECLARECURSOR c_country (p_region_id NUMBER) ISSELECT country_id, country_nameFROM wf_countriesWHERE region_id = p_region_id;v_country_record c_country%ROWTYPE;
BEGINOPEN c_country (5);  --更改为需要的区域。LOOPFETCH c_country INTO v_country_record;EXIT WHEN c_country%NOTFOUND;DBMS_OUTPUT.PUT_LINE(v_country_record.country_id|| ' ' || v_country_record.country_name);END LOOP;CLOSE c_country;
END;


二、参数游标用法

(1)使用参数语法定义游标

在游标声明中命名的每个参数在OPEN语句中必须具有对应的值。 参数数据类型与标量变量的数据类型相同,但不给它们大小。 参数名称在游标SELECT语句的WHERE子句中使用。

CURSOR cursor_name[(parameter_name datatype, ...)]
ISselect_statement;
在语法中:
cursor_name是声明的游标的PL / SQL标识符
•parameter_name是参数的名称
•数据类型是参数的标量数据类型

•select_statement是一个没有INTO子句的SELECT语句

用参数打开游标

以下是用参数打开游标的语法:

OPEN cursor_name(parameter_value,.....) ;

(2)带参数的游标

游标打开时将参数值传递给游标。 因此,您可以多次打开一个显式光标并每次获取一个不同的活动集。 在以下示例中,游标会多次打开。


具有参数的光标的另一个例子

DECLARE
v_deptid employees.department_id%TYPE;
CURSOR empcur (p_deptid NUMBER) ISSELECT employee_id, salaryFROM employeesWHERE department_id = p_deptid;
v_emp_rec empcur%ROWTYPE;
BEGIN
SELECT MAX(department_id) INTO v_deptidFROM employees;
OPEN empcur(v_deptid);
LOOPFETCH empcur INTO v_emp_rec;EXIT WHEN empcur%NOTFOUND;DBMS_OUTPUT.PUT_LINE(v_emp_rec.employee_id|| ' ' || v_emp_rec.salary);
END LOOP;
CLOSE empcur;
END;

(3)光标FOR循环参数

如果需要,我们可以使用游标FOR循环:

DECLARECURSOR emp_cursor (p_deptno NUMBER) ISSELECT employee_id, last_nameFROM employeesWHERE department_id = p_deptno;
BEGINFOR v_emp_record IN emp_cursor(10) LOOP….END LOOP;
END;

(4)具有多个参数的游标

在下面的例子中,声明了一个游标并用两个参数调用:

DECLARECURSOR countrycursor2 (p_region_id NUMBER,p_population NUMBER) ISSELECT country_id, country_name, populationFROM wf_countriesWHERE region_id = p_region_idOR population > p_population;
BEGINFOR v_country_record IN countrycursor2(145,10000000) LOOP
DBMS_OUTPUT.PUT_LINE(v_country_record.country_id ||' '|| v_country_record. country_name||' '||
v_country_record.population);
END LOOP;
END;
另一个例子
该光标可以获取所有收入超过10000美元的IT程序员。
DECLARECURSOR emp_cursor3 (p_job VARCHAR2,p_salary NUMBER) ISSELECT employee_id, last_nameFROM employeesWHERE job_id = p_jobAND salary > p_salary;
BEGINFOR v_emp_record IN emp_cursor3('IT_PROG', 10000) LOOPDBMS_OUTPUT.PUT_LINE(v_emp_record.employee_id ||' ' ||v_emp_record.last_name);END LOOP;
END;


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

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

相关文章

4.canal抽取失败报is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts‘

【README】 1.本文po出了报错【messageXXX is blocked because of many connection errors; unblock with mysqladmin flush-hosts】的解决方法; 2.解决方法参考了 StackOverflow: mysql - How to unblock with mysqladmin flush hosts - Stack Overfl…

raid配置ssd为缓存_超融合硬件选配推荐指南 | 第三期:SSD 与 HDD

本期《SMTX OS 硬件选配推荐指南》继续与大家分享单机硬件配置中存储相关的内容——固态硬盘 SSD 和机械硬盘 HDD 章节。前两期摘录了单机硬件配置中的 CPU 选择和内存选择参考,感兴趣的读者可点击回顾。如果希望获取完整《指南》,可点击这里下载。单机硬…

Oracle入门(十四.14)之处理异常

一、什么是异常? 在执行破坏程序正常运行的程序期间发现错误时会发生异常。 有很多可能的例外原因:用户在输入时出现拼写错误; 程序无法正常工作; 广告网页不存在; 等等。 你能想到在使用网站或应用程序时遇到的错误吗?二、PL / SQL中的异常…

1.(译)NoSQL与SQL数据库对比

【README】 1.本文翻译自: NoSQL Vs SQL Databases | MongoDB 2.NoSQL指的是不止sql(not only sql);NoSQL数据库是2000年代末开发的,重点是扩展,快速查询,允许频繁变更,让编程更简…

C#使用Redis集群缓存

本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层。 一、背景 系统考虑到高并发的使用场景。对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决。对于系统高并发查询,为了提供性能减少数据库压力,我们加入缓存机制&#…

Oracle入门(十四.15)之捕获Oracle服务器异常

一、异常类型 本课讨论预定义和非预定义的Oracle服务器异常。(1)使用PL / SQL处理异常有两种提出异常的方法: •Oracle服务器隐式(自动):- 发生Oracle错误并自动引发相关异常。- 例如,如果在SEL…

萤石云好友分享的监控怎么看_萤石S1:英超赛场上雄起的中国品牌

北京时间4月26日20:30,英超2014/15赛季第34轮,曼联客场0比3不敌埃弗顿,麦卡锡、斯通斯和米拉拉斯先后进球。曼联在连败的情况下积分榜跌至第四。后弗格森时代的曼联最近刚刚有点起色,似乎这场惨败又让曼联球迷的信心跌到了低谷。在…

2.es与mongodb的区别

【1】es vs mongo 图片转自: MongoDB和Elasticsearch的对比 参考文档: MongoDB和Elasticsearch的对比 10亿数据,数据库选Mongo还是Elalsticsearch?-51CTO.COM ElasticSearch可以替代Mongo么? - 知乎 https://www.j…

taro 缺点_Taro小程序富文本解析4种方法

最近遇到一个富文本解析的问题,尝试了很多办法,终于成功了!最后本人选择Parser。1.Taro组件rich-text优点:使用极其方便,引用一下就行了。缺点:不支持视频,放弃!2.wxParse https://g…

IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm

自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问题是一些比较基本的问题,由于时间的缘故,不会一一的为大家回复,如果有不明白的,希望大家勤…

Oracle入门(十四.16)之捕获用户定义的异常

一、异常类型 本文讨论用户定义的错误。二、捕获用户定义的异常 PL / SQL允许你定义你自己的异常。 您根据应用程序的要求定义异常。输入数据期间需要用户定义的异常的一个示例。 假设您的程序提示用户输入部门编号和名称,以便它可以更新部门的名称。 当用户进入无效…

以太坊地址和公钥_以太坊交易签名解析源码解读

上篇文章《以太坊交易签名过程源码解析[1]》从源码角度分析了一个合约调用的的签名过程,签名后的交易发送到以太坊节点后,节点需要从签名交易中还原出公钥(从公钥中单向计算出账号地址),进而将交易放入交易池中。本文从go-ethereum源码的出发…

IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡

在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的来讲述如何在使用ARR进行负载均衡。 本篇文章的目的主要是一步步的带领大家如何配置和使用ARR来进行Http请求的负载均衡,从而实现高可用与高扩展性。同…

Oracle入门(十四.17)之procedure传递参数

一、PROCEDURE 参数模式参数模式在形式参数声明中指定,位于参数名称之后,位于其数据类型之前。 参数传递模式: •IN参数(默认值)为子程序提供处理值。 •OUT参数将值返回给调用者。•IN OUT参数提供一个输入值&#xf…

1.elasticsearch文档存储(保存|修改|删除)

【README】 0.本文部分内容(数据)总结自 es 开发文档, Document APIs | Elasticsearch Guide [7.2] | Elastic ; 1.本文的es版本是7.2.1; 2.elasticsearch 是一个数据存储,检索和分析引擎;本…

db9针232接口波特率标准_理解串口通信以及232,485,422常见问题

下面先讲一讲串口通信的一些基本概念,术语。如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流。这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲。因…

理解 .NET Platform Standard

.NET Platform Standard:https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md .NET Platform Standard 是什么?直译过来就是 .NET 平台规范或标准,它的目的就是使 .NET 各个平台之间更加统一…

Oracle入门(十四.18)之使用动态SQL

一、SQL的执行流程数据库中的所有SQL语句都经历了不同的阶段: •解析:预执行“这可能吗?”检查包括语法,对象存在,权限等 •绑定:获取语句中引用的任何变量的实际值 •执行:语句被执行。•提取&…

天平游码读数例题_初二上册物理实验——托盘天平使用的注意事项

今天给大家讲讲托盘天平的使用和注意事项。(1)首先,我们回忆一下什么是托盘天平如下图托盘天平由底座、横梁、分度盘、托盘、平衡螺母、标尺、游码、托盘等组成,当然还有砝码。托盘天平是称量物体的质量的工具(质量符号m,单位:国际…

3.elasticsearch文档查询dsl

【README】 1.本文elasticsearch版本是 7.2.1; 2.文档查询语句叫做 DSL, domain structure language, 领域特定语言;dsl,参见 Query DSL | Elasticsearch Guide [7.2] | Elastic 3.elasticsearch 基于json 提供了完…