Oracle中光标的使用和异常

原创 2012年03月21日 18:10:50
Oracle中光标的使用和异常
1.没有参数的光标的使用
SQL> declare
  2  cursor cl is select * from emp;
  3  emp_row emp%rowtype;
  4  begin
  5  open cl;
  6  loop
  7       fetch cl into emp_row;
  8       exit when cl%notfound;
  9       dbms_output.put_line('员工的名称'|| emp_row.ename || '员工的部门'|| emp_row.deptno);
 10  end loop;
 11  close cl;
 12  end;
 13  /
 
员工的名称SMITH员工的部门20
员工的名称ALLEN员工的部门30
员工的名称WARD员工的部门30
员工的名称JONES员工的部门20
员工的名称MARTIN员工的部门30
员工的名称BLAKE员工的部门30
员工的名称CLARK员工的部门10
员工的名称SCOTT员工的部门20
员工的名称KING员工的部门10
员工的名称TURNER员工的部门30
员工的名称ADAMS员工的部门20
员工的名称JAMES员工的部门30
员工的名称FORD员工的部门20
员工的名称MILLER员工的部门10
 
PL/SQL procedure successfully completed



SQL> declare
  2  cursor cl(emp_name varchar2) is select * from emp where ename=emp_name;
  3  emp_row emp%rowtype;
  4  begin
  5  open cl('SMITH');
  6  fetch cl into emp_row;
  7  dbms_output.put_line('员工的名称'||emp_row.ename||'员工的工作'|| emp_row.job);
  8  close cl;
  9  end;
 10  /
 
员工的名称SMITH员工的工作CLERK



部门编号为10的员工
SQL> declare
  2  cursor cl(emp_deptno number) is select * from emp where deptno=emp_deptno;
  3  emp_row emp%rowtype;
  4  begin
  5  open cl(10);
  6  loop
  7  fetch cl into emp_row;
  8  exit when cl%notfound;
  9  dbms_output.put_line( '员工的名称:'||emp_row.ename);
 10  end loop;
 11  close cl;
 12  end;
 13  /
 
员工的名称:CLARK
员工的名称:KING
员工的名称:MILLER
 
PL/SQL procedure successfully completed




除0的异常
SQL> declare
  2  pnum number:=10;
  3  begin
  4  pnum:=pnum/0;
  5  exception
  6    when zero_divide then
  7    dbms_output.put_line('除数不能为0');
  8  end;
  9  /
 
除数不能为0
 
PL/SQL procedure successfully completed


自定义的例外
SQL> declare
  2     cursor cl(emp_no number) is select * from emp where empno=emp_no;
  3      emprow emp%rowtype;
  4      no_found exception;
  5      begin
  6      open cl(1000);
  7           fetch cl into emprow;
  8                 if cl%notfound then raise no_found;
  9                 end if;
 10     close cl;
 11     exception
 12           when no_found then
 13                dbms_output.put_line('自己定义的意外');
 14     end;
 15  /
 
自己定义的意外
 
PL/SQL procedure successfully completed


 

相关文章推荐

【oracle学习】7.plsql光标和例外

前言 我们以下的所有操作均在PL/Sql Developer工具上完成: 我们以下的表操作可能会基于以下两张表: 我们创建一个员工表和部门表: 员工信息表 create table EMP( ...

oracle基础知识2----pl/sql基础(基本语法、光标、例外、应用)

测试数据来源:http://blog.csdn.net/ochangwen/article/details/51297893     PL/SQL(Procedure Language/SQL),是...

oracle之光标(游标)介绍

--一个具体的光标 --定义光标 cursor c1 is select ename from emp; --打开光标 open c1; --取一行光标的值: --含义是从c1这个光标...

Oracle:光标(游标)

语法: CURSOR 光标名 [(参数名 数据类型[ 参数名 数据类型]…)] IS SELECT 语句; 光标用于存储一个查询返回的多行数据。   例如: Cursor c1 is sel...

oracle学习之光标

--查询并打印员工的姓名和薪水 /* 1.光标的属性 %find %notfound %isopen :判断光标是否打开 %rowcount :影响的行数2.光标的限制 */ ...

ORACLE RAC 11.2.0.4 for RHEL6.8 集群CRS异常导致集群命令无法使用

经查看集群相关日志可以确定,由于存储磁盘出现IO问题(或光线闪断、或IO延迟),导致集群CRS异常宕机。但是,比较奇怪的是,虽然CSR掉线了,ASM实例 和DB实例却好好的,还可以正常使用。查询ora...

使用Oracle DataBase Configuration Assistant创建数据发生监听程序未启动异常

问题描述:刚安装Oracle数据库,使用DataBase Configuration Assistant创建数据发生监听程序未启动异常 具体描述:使用DataBase Configuration As...

使用sqoop连接oracle 出的异常, Imported Failed: Attempted to generate class with no columns? 附解决方案

集群基本环境:        这个可以参考上一篇日志:http://blog.csdn.net/shatelang/article/details/7668885     在使用sqoop连接or...

oracle 存储过程,游标、异常处理,集合使用入门详解

我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识。如:游标的处理,异常的处理,集...

Oracle 使用druid连接池,发生“违反协议”异常

背景 项目中Oracle使用druid数据库连接池,为了提高访问数据库的效率,开启了PreparedStatement Cache。但是随着项目的运行,也出现了一些问题,在项目运行的过程中,给表添加字...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle中光标的使用和异常
举报原因:
原因补充:

(最多只允许输入30个字)