游标提供了一种从表中检索数据并进行操作的灵活手段,主要用在服务器上,处理由客户端发送给服务器端的sql语句,或者是批处理、存储过程、触发器中的数据处理请求。

显式游标

是由用户声明和操作的一种游标,通常用于将查询出的结果集进行操作,使用它处理数据的步骤包括:声明游标,打开游标,读取游标,关闭游标。

①声明游标

cursor cur_emp
is
select ename,job from emp where empno=7499;
cur_emp:游标名称。

②打开游标

open cur_emp

③读取游标

fetct cur_emp into {variable}

④关闭游标

close cur_emp

游标的常用属性

无论是显式游标还是隐式游标,都具有%found  %notfound  %rowcount  %isopen 这4个属性。

 declare
var_ename varchar2(50);
var_job varchar2(50);
cursor cur_emp
is
select ename,job from emp where empno=7499;
begin
open cur_emp;
fetch cur_emp into var_ename,var_job;
if cur_emp%found then
dbms_output.put_line('编号是7499的员工名称为:'||var_ename||',职务是:'||var_job);
else
dbma_output.put_line('无数据记录');
end if;
end;

隐式游标

在执行一个sql语句的时候,oracle会自动创建一个隐式游标。主要是针对update/delete语句的执行结果进行操作。

 begin
update emp set sal=sal*(1+0.2) where job='SALESMAN';
if sql%notfound then
dbms_output.put_line('没有雇员需要上调工资');
else
dbms_output.put_line('有'||sql%rowcount||'个雇员工资上调20%');
end if;
end;

使用for语句遍历游标

①使用for遍历隐式游标

 begin
for emp_record in
(select empno,ename,sal from emp where job='SALESMAN')
loop
dbms_output.put_line('雇员编号:'||emp_record.empno);
dbms_output.put_line('雇员姓名:'||emp_record.ename);
dbms_output.put_line('雇员工资:'||emp_record.sal);
end loop;
end;

②使用for遍历显式游标

 declare
cursor cur_emp
is
select * from emp where deptno=30;
begin
for emp_record in cur_emp
loop
dbms_output.put_line('雇员编号:'||emp_record.empno);
dbms_output.put_line('雇员姓名:'||emp_record.ename);
dbms_output.put_line('雇员职务:'||emp_record.job);
end loop;
end;

【学亮IT手记】PL/SQL游标编程的更多相关文章

  1. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  2. PL/SQL 基础编程

    PL/Sql 编程 PL/Sql结构 [declare] --声明变量 begin --执行部分 [exception] ---异常处理部分 end PL/Sql  基本数据类型 数值类型 1. nu ...

  3. PL/SQL 游标 (实验七)

    PL/SQL 游标 emp.dept 目标表结构及数据 要求 基于部门表建立游标dept_cursor1,使用记录变量接收游标数据,输出部门表信息: 显示格式: 部 门 号: XXX 部门名称: XX ...

  4. PL/SQL 游标

    本随笔不是原创,只是学习笔记,用于加深记忆,原创地址PL/SQL --> 游标 一.游标的相关概念和特性 1.定义: 映射到结果集中的某一行的特定位置,类似与C语言中的指针.即通过游标方式定位到 ...

  5. oracle PL/SQL基础编程

    PL/SQL(Procedural Language/SQL)是oracle中引入的一种过程化编程语言 PLS-00103:出现符号"declare"在需要下列之一时 符号&quo ...

  6. Oracle数据库之PL/SQL游标

    1. 游标概念 字面意思是游动的光标,是指向上下文区域的句柄或指针. 在PL/SQL块中执行CRUD操作时,ORACLE会在内存中为其分配上下文区.用数据库语言来描述游标就是:映射在上下文区结果集中一 ...

  7. 初试PL/SQL并行编程

    -----------------------------Cryking原创------------------------------ -----------------------转载请注明出处, ...

  8. Oracle PL/SQL 游标

    在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...

  9. PL/SQL 游标的使用

     游标的使用 ①游标概念 为了处理SQL 语句,ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息, 当中包含要处理的行的数目.一个指向语句被分析以后的表示 ...

随机推荐

  1. 在线编辑器ACE Editor的使用

    ACE 是一个开源的.独立的.基于浏览器的代码编辑器,可以嵌入到任何web页面或JavaScript应用程序中.ACE支持超过60种语言语法高亮,并能够处理代码多达400万行的大型文档.ACE开发团队 ...

  2. SQLite 线程安全和并发

    SQLite 与线程 SQLite 是线程安全的. 线程模型 SQLite 支持如下三种线程模型 单线程模型 这种模型下,所有互斥锁都被禁用,同一时间只能由一个线程访问. 多线程模型 这种模型下,一个 ...

  3. 用户对动态PHP网页访问过程,以及nginx解析php步骤

    www.example.com | Nginx | 路由到www.example.com/index.php | 加载nginx的fast-cgi模块 | fast-cgi监听127.0.0.1:90 ...

  4. ISCC:Please give me username and password!

    地址:http://118.190.152.202:8017/ 题目说 给用户名和密码, 构造url为:118.190.152.202:8017/?username=sda&password= ...

  5. mysql的模糊匹配

    实例: SQL模糊查询,使用like比较关键字,加上SQL里的通配符,请参考以下: 1.LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden). 2.LIKE'%inger' ...

  6. Python 学习 第十四篇:命名元组

    Python的元组不能为元组内部的数据进行命名,而 collections.namedtuple 可以来构造一个含有字段名称的元组类,命名元组可以通过逗号+字段名来获取元素值: collections ...

  7. Visual studio 2015 Community 安装过程中遇到问题的终极解决

    早就有给自己电脑升级VS的想法,可是安装过程并不顺利,一直拖到现在,昨天下定决心,把遇到的问题一个个解决,终于安装成功了,将安装过程中遇到的问题和解决方法记录一下. 需要说明一下的是,不同的电脑环境可 ...

  8. Python_迭代器和生成器的复习_38

    迭代器和生成器 迭代器: 双下方法:很少直接调用的方法,一般情况下,是通过其他方法触发的 可迭代的协议——可迭代协议 含有__iter__ 的方法 ('__iter__' in dir(数据)) 可迭 ...

  9. 软件工程(FZU2015) 学生博客列表(最终版)

    FZU:福州大学软件工程 张老师的博客:http://www.cnblogs.com/easteast/ 经过前两周选课,最后正式选上课程的所有学生博客如下: 序号 学号后3位 博客 1 629 li ...

  10. ocrosoft 程序设计提高期末复习问题M 递归求猴子吃桃

    http://acm.ocrosoft.com/problem.php?cid=1172&pid=12 题目描述 猴子吃桃问题.猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. ...