前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Oracle存储过程中游标的简单使用

Oracle存储过程中游标的简单使用

作者头像
Alfred Zhao
发布于 2019-05-24 12:21:56
发布于 2019-05-24 12:21:56
3.5K00
代码可运行
举报
运行总次数:0
代码可运行

存储过程中查询语句如何返回多行结果? 我们知道,如果存储过程中查询语句有多行结果输出,会报错:ORA-01422: exact fetch returns more than requested number of rows 若想让存储过程中的查询语句返回多行结果不报错,则需要使用游标来实现。 本例主要也是用来熟悉存储过程中游标的简单使用方法。案例所涉及的数据表使用的是oracle自带的scott用户。

1.打开输出选项

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET SERVEROUTPUT ON;

2.创建查询员工薪水的存储过程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create or replace procedure proc_salary is 

  --定义变量
  v_empno emp.empno%TYPE;
  v_ename emp.ename%TYPE;
  v_sal emp.sal%TYPE;
  
  --定义游标
  CURSOR emp_cursor IS
  SELECT empno, ename, sal from emp;
  
BEGIN

--循环开始
LOOP

  IF NOT emp_cursor%ISOPEN  THEN
     OPEN emp_cursor;
  END IF; 
  
  FETCH emp_cursor INTO  v_empno, v_ename, v_sal; 
  --退出循环的条件
  EXIT WHEN emp_cursor%NOTFOUND OR emp_cursor%NOTFOUND IS NULL;
 
  dbms_output.put_line('员工编号为' || v_empno || '的' || v_ename || '薪水为:' || v_sal);
    
END LOOP;

END;
/

3.执行存储过程 exec proc_salary;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> exec proc_salary;
员工编号为7369SMITH薪水为:800
员工编号为7499ALLEN薪水为:1600
员工编号为7521WARD薪水为:1250
员工编号为7566JONES薪水为:2975
员工编号为7654MARTIN薪水为:1250
员工编号为7698BLAKE薪水为:2850
员工编号为7782CLARK薪水为:2450
员工编号为7788SCOTT薪水为:3000
员工编号为7839KING薪水为:5000
员工编号为7844TURNER薪水为:1500
员工编号为7876ADAMS薪水为:1100
员工编号为7900JAMES薪水为:950
员工编号为7902FORD薪水为:3000
员工编号为7934MILLER薪水为:1300

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.00
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-06-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PL/SQL 编程(二)游标、存储过程、函数
游标--数据的缓存区 游标:类似集合,可以让用户像操作数组一样操作查询出来的数据集,实质上,它提供了一种从集合性质的结果中提取单条记录的手段。 可以将游标形象的看成一个变动的光标,他实质上是一个指针,在一段Oracle存放数据查询结果集或者数据操作结果集的内存中,这个指针可以指向结果集任何一条记录。 游标分静态游标和REF游标两类,静态游标包含显式游标和隐式游标。 显式游标: 在使用之前必须有明确的游标声明和定义,这样的游标定义会关联数据查询语句,通常会返回一行或多行。打开游标后,用户可以利用游标的位置对结
二十三年蝉
2018/02/28
3.9K0
【数据库原理与运用|MySQL】MySQL存储过程(详细超全)
云数据库https://cloud.tencent.com/product/cdb
小小程序员
2022/12/22
1.4K0
【数据库原理与运用|MySQL】MySQL存储过程(详细超全)
pl/sql编程---过程、函数、包
1.注释 单行注释 -- select * from emp where empno=7788; --取得员工信息 多行注释 /*...*/来划分 2.标志符号的命名规范 1).当定义变量时,建议用v_作为前缀v_sal 2).当定义常量时,建议用c_作为前缀c_rate 3).当定义游标时,建议用_cursor作为后缀emp_cursor 4).当定义例外时,建议用e_作为前缀e_error 3.块结构示意图 pl/sql块由三个部分构成:定义部分,执行部分,例外处理部分。 如下所示: declare
微醺
2019/01/17
5980
Oracle应用实战八(完结)——存储过程、函数+对象曹组
游标 在写java程序中有结果集的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。 游标可以理解为是PL/SQL中的结果集,我们通过游标可以提取结果
Java帮帮
2018/03/19
2K0
Oracle应用实战八(完结)——存储过程、函数+对象曹组
pl/sql存储过程及实用案例(建议收藏)
10个人围成圈,数到3退出圈,问最后退出的是谁 //数数问题 declare v_personNumber integer := 10;--人数 v_number integer := 3;--数的数
用户7353950
2022/05/11
8360
PL/SQL --> 包重载、初始化
包的重载功能类似于C++中函数的重载功能,即拥有多个同名的子程序,每个同名子程序使用不同的参数。用户可以传递不同的参数来调
Leshami
2018/08/07
7240
PL/SQL --> 异常处理(Exception)
Exception是一种PL/SQL标识符,当运行的PL/SQL块出现错误或警告,则会触发异常处理。为了提高程序的健壮性,可以在PL/SQL块中引
Leshami
2018/08/07
1.8K0
PL/SQL --> 游标
映射在结果集中某一行数据的具体位置,类似于C语言中的指针。即通过游标方式定位到结果集中某个特定的行,然后根据业务需求
Leshami
2018/08/07
1.1K0
PL/SQL -->隐式游标(SQL%FOUND)
在PL/SQL中,游标的使用分为两种,一种是显示游标,一种是隐式游标,显示游标的使用需要事先使用declare来进行声明,其过程包括
Leshami
2018/08/07
1.5K0
Oracle SQL 异常处理
有预定义异常 与 用户自定义异常 还有 raise_application_error()函数 raise_application_error() 只能把异常抛出而不能处理异常。
星哥玩云
2022/08/17
7530
Oracle SQL 异常处理
Oracle PL/SQL随堂笔记总结
1.理解oracle的pl/sql的概念 2.掌握pl/sql编程技术(过程、函数、触发器) pl/sql是标准sql语句的扩展 简介 1.过程、函数、触发器都是由pl/sql编写 2.过程、函数、触发器是在oracle中 3.pl/sql是非常强大的过程语言 4.过程、函数等可以在java程序被调用 学习必要性: 1.提高应用程序的性能 2.模块化的设计思想 3.减少网络传输量 4.提高安全性 不好的方面: 移植性差 pl/sql可以使用变量和逻辑控制语句 可编写:分页存储过程模块,订单处理存储过程模块,转账存储过程模块……
Alfred Zhao
2019/05/24
2.2K0
PL/SQL --> 存储过程
存储过程子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库。是一个有名字的PL/SQL代码块,支持接收或不接受参数
Leshami
2018/08/07
1.6K0
Oracle-PL/SQL基础
pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入Sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。
小小工匠
2021/08/16
1.9K0
6.存储过程中的游标使用(6/10)
在数据库编程中,游标(Cursor)是一种重要的数据库对象,它允许开发者逐行处理查询结果集。这对于需要对每一行数据进行特定处理的场景非常有用,如数据转换、数据清洗、复杂计算等。本文将详细介绍游标的概念、使用方法以及在存储过程中的应用。
正在走向自律
2024/12/18
4910
6.存储过程中的游标使用(6/10)
Oracle游标使用详解
本节对Oracle中的游标进行详细讲解。本节所举实例来源Oracle中scott用户下的emp表dept表:
星哥玩云
2022/08/17
4.2K0
Oracle游标使用详解
PL/SQL --> 动态SQL
使用动态SQL是在编写PL/SQL过程时经常使用的方法之一。很多情况下,比如根据业务的需要,如果输入不同查询条件,则生成不同的执行
Leshami
2018/08/07
2.4K0
PLSQ编程
LOOP 要执行的语句; EXIT WHEN <条件语句> /条件满足,退出循环语句/END LOOP;
全栈程序员站长
2022/07/05
1.7K0
Oracle数据库学习笔记(七 —— 游标)
当执行一条DML语句或者SELECT…INTO语句时,都会创建一个隐含游标 隐含游标的名称是SQL,不能对SQL
Gorit
2021/12/09
1.1K0
PL/SQL 编程(一)基础,变量,分支,循环,异常
SQL和PL/SQL: SQL 结构化查询语言(Structural Query Language),是用来访问和操作关系型数据库的一种标准通用语言,属于第四代语言(4GL)。可以方便的调用相应语句来去的结果,特点是非过程化,使用的时候不用指明执行的具体方法,不用关注实现的细节,但是某些情况下满足不了复杂业务流程的需求。 PL/SQL是 Procedure Language & Structured Query Language 的缩写。属于第三代语言(3GL),是一种过程化语言。PL/SQL是对SQL语言
二十三年蝉
2018/02/28
1.8K0
PL/SQL 编程(一)基础,变量,分支,循环,异常
Oracle PL/SQL编程之变量
注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1、简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a、标量类型(Scalar) b、复合类型(Composite) c、参照类型(Refrence) d、lob(large object)类型 下面来一一介绍 2、标量(Scalar)类型       只能存放单个值的变量 在编写pl/sql语句时,如果需要用到变量,那么就需要在定义部分定义变量。pl/sql中定义变量个常量
郑小超.
2018/01/26
1.1K0
相关推荐
PL/SQL 编程(二)游标、存储过程、函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验