`
SScola
  • 浏览: 4567 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据库存储过程游标异常处理

    博客分类:
  • ETL
阅读更多
oracle学习笔记(五)之游标
1.游标:指定私有SQL内存区的引用,这段内存区保存了SQL语句的执行结果。
在PL/SQL程序块中,在不使用游标的情况下,Select语句只能返回一条记录。
Oracle数据库中执行的每个SQL语句都有对应单独的游标。
游标提供了访问SELECT语句执行结果的途径。两种类型:
—隐式游标:所有的DML语句和PL/SQL SELECT语句都有
—显式游标:由开发人员声明和控制。
2.显式游标的使用
用于暂存查询取出的多行结果。
按行处理查询返回的多行结果。
在PL/SQL块中通过循环手动控制游标。
可将游标作为函数的返回值(少见)、也可作为存储过程的传出参数。可实现将查询结果集传给调用环境。
显式游标属性:
%ISOPEN   Boolean类型  游标打开返回true
%NOTFOUND Boolean类型  如果最近抓取没有获得记录,返回true
%FOUND    Boolean类型  如果最近抓取获得记录,返回true
%ROWCOUNT Number类型   返回到目前为止获取的记录条数。
3.控制显式游标
fetch会抓取当前行的记录,并将记录指针下移一行。
declare(创建一个命名的内存区—游标)→OPEN(打开游标)→FETCH(取当前记录装入变量)→
EMPTY(检测游标中是否还有记录,如果找到记录,继续取记录,否则释放游标)→CLOSE
4.声明游标
语法:
CURSOR cursor_name IS
select_statement;
在游标声明中,SELECT子句不要包含INTO子句,可以选出多行,或者0行。一旦在select子句中使用了into子句
则select子句必须选出一行,且只能选出一行。
5.打开游标=执行查询和取出结果集 OPEN cursor_name
不论查询有无返回记录,都不会引起异常。
5.1从游标中获取数据
打开游标之后,可以多次fetch游标中当前行的数据。
fetch cursor_name into variable1,variable2...
变量个数应该与游标字段个数相同,字段顺序一一对应,类型要匹配。
建议在into后使用record类型变量。
每次抓取操作后,通过使用游标属性测试游标状态,判断游标是否包含更多额记录行。
6.关闭游标
在对查询到的所有记录的处理完成后,关闭游标。
CLOSE cursor_name;
一旦游标关闭,不能再抓取数据了。如果需要,必须重新打开游标。
7.控制多行提取
使用循环从一个显示游标中取出多行数据
每次重复,取出一行数据。
通过使用%NOTFOUND属性,判断上一次的抓取操作是否成功取得数据。
也可以通过%FOUND属性来控制循环抓取操作。
8.带参数的游标
可以在声明游标时指定参数。
一旦在声明游标时指定了参数,就可以在select查询中使用参数。
打开带参数的游标
open cursor_name(parametername);
9.游标for循环
简化了显式游标的控制过程
通过相应的语法隐式的声明record变量、打开、执行抓取操作和关闭游标。
不用声明record类型变量,Oracle会隐式声明。
优点:
无需显式打开游标
无需声明record变量,for循环会自动隐式定义record变量
无需使用fetch抓取数据
循环结束,无需使用close来关闭游标。
10.where current of子句
可以使用游标更新或删除当前行
在游标的查询定义中包含FRO UPDATE子句来锁定行,用作修改。
SELECT...FROM...FOR UPDATE [of column-reference][NOWAIT]
NOWAIT指:当试图修改的记录已经被其他线程加锁,则直接返回,放弃修改。
通过使用where current of子句,从显式的游标中提取当前行。
11.游标引用
游标引用是一种自定义类型,可以作为函数返回值类型、存储过程的参数类型
定义游标引用类型:TYPE xxx_cursor_type IS REF OF CURSOR
定义了游标引用类型后就可以使用它来定义变量。
处理游标引用变量
初始化游标引用变量,初始化后游标引用变量既可以作为返回值,也可作为传出参数。
在java程序中采用如下代码来注册游标引用类型:
registerOutParameter(index,OracleTypes.CURSOR);
如果需要在PL/SQL程序中处理游标数据,则使用游标即可;如果希望把游标作为整体传出PL/SQL程序,则使用游标引用
分享到:
评论

相关推荐

    PLSQL 文档集合包(语法 异常 指针 游标 存储过程...)

    .... . . . 5.1 数据库模式对象 5.2 索引 5.3 同义词 5.4 数据库链接 . . . . .

    达梦数据库_SQL语言手册

    存储模块的异常处理 异常变量的说明 异常的抛出 异常处理器 异常处理用法举例 存储模块的语句 游标 动态 游标变量 返回查询结果集 语句应用举例 客户端存储模块 子过程、子函数 子过程 子函数 记录...

    Oracle数据库SQL和PL SQL实例教程 高继民(ppt)

    oracle数据库ppt 第1章 关系数据库与SQL语言环境 第2章 数据查询 第3章 数据操作 第4章 表和视图 第5章 其他数据库对象 ...第7章 游标和异常处理 第8章 存储过程、函数和包 第9章 触发器 第10章 数据库开发应用实例

    在Python中编写数据库模块的教程

    访问数据库需要创建数据库连接、游标对象,然后执行SQL语句,最后处理异常,清理资源。这些访问数据库的代码如果分散到各个函数中,势必无法维护,也不利于代码复用。 此外,在一个Web App中,有多个用户会同时访问...

    PL/SQL程序设计

    数据库存储过程和函数 包 触发器 §1.2 SQL与PL/SQL §1.2.1 什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写。ORACLE的SQL是支持ANSI(American national Standards Institute)和...

    oracle学习资料

    §5.1.3 用户自定义的异常处理 13 §5.1.4 用户定义的异常处理 13 §5.2 异常错误传播 13 §5.2.1 在执行部分引发异常错误 13 §5.2.2 在声明部分引发异常错误 13 §5.3 异常错误处理编程 13 §5.4 在 PL/SQL 中使用...

    学生成绩管理系统Oracle全部SQL语句.txt

    3、要求使用sqlplus,pl/sql或developer建立存储过程,触发器和程序包等代码,其中要求用到游标,异常,各种语句等对表中数据进行处理; 4、使用自己熟悉的开发语言,加入界面,连接数据库; 5、报告要有操作截图...

    PLSQL基础教程

    §5.1.3 用户自定义的异常处理 13 §5.1.4 用户定义的异常处理 13 §5.2 异常错误传播 13 §5.2.1 在执行部分引发异常错误 13 §5.2.2 在声明部分引发异常错误 13 §5.3 异常错误处理编程 13 §5.4 在 PL/SQL ...

    PLSQL程序设计

    §5.1.3 用户自定义的异常处理 13 §5.1.4 用户定义的异常处理 13 §5.2 异常错误传播 13 §5.2.1 在执行部分引发异常错误 13 §5.2.2 在声明部分引发异常错误 13 §5.3 异常错误处理编程 13 §5.4 在 PL/SQL 中使用...

    plsql_oracle 编程

    §5.1.3 用户自定义的异常处理 13 §5.1.4 用户定义的异常处理 13 §5.2 异常错误传播 13 §5.2.1 在执行部分引发异常错误 13 §5.2.2 在声明部分引发异常错误 13 §5.3 异常错误处理编程 13 §5.4 在 PL/SQL 中使用...

    plsql_oracle 8i 编程讲义

    §5.1.3 用户自定义的异常处理 13 §5.1.4 用户定义的异常处理 13 §5.2 异常错误传播 13 §5.2.1 在执行部分引发异常错误 13 §5.2.2 在声明部分引发异常错误 13 §5.3 异常错误处理编程 13 §5.4 在 PL/SQL 中使用...

    Java数据库编程宝典3

    3.9.1 在存储过程中使用输入参数 3.9.2 存储过程中使用输出参数 3.10 小结 第4章 JDBC入门 4.1 什么是JDBC 4.2 两层和三层模型 4.2.1 两层模型 4.2.2 三层模型 4.3 SQL的一致性 4.4 JDBC兼容性 4.5 ...

    关于oracle存储过程的基本语法

    在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了;在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常;在存储过程中,...

    自己封装的JDBC工具类源码

    最近刚学习了JDBC,最后封装了一段简单的工具类,主要功能有: 1、执行sql语句返回单条查询结果; 2、执行查询语句sql返回结果集; 3、执行数据的插入,修改,...另外各种异常均抛出,需要在调用时进行捕捉处理!

    SQL Server自定义异常raiserror使用示例

    在使用SQL Server存储过程或者触发器时,通常会使用自定义异常来处理一些特殊逻辑。例如游标的销毁,事务的回滚。接下来将会详细的介绍SQL Server自定义异常的使用。 使用“raiserror”来抛出自定义异常。如下代码:...

    PL/SQL 程序设计

    PL/SQL 程序设计 本章主要重点:  PL/SQL概述  PL/SQL块结构  PL/SQL流程  运算符和表达式  游标  异常处理  数据库存储过程和函数  包  触发器

    plsql_oracle

    本资料包括PL/SQL概述,PL/SQL块结构,PL/SQL流程,运算符和表达式,游标,异常处理,数据库存储过程和函数,包,触发器等内容.

    Oracle数据库SQL和PL/SQL实例教程

    Oracle数据库SQL和PL/SQL实例教程 非常适用于初学者。结合例子深刻形象的讲解。 第1章 关系数据库与SQL语言环境 ...第7章 游标和异常处理 第8章 存储过程、函数和包 第9章 触发器 第10章 数据库开发应用实例

    oracle初学资料

    oracle初学资料,数据查询,关系数据库和SQL语言环境,表和视图,PLSQL基础,游标和异常处理,存储过程和游标,触发器,分区表d等等!整理很长时间的PPT

Global site tag (gtag.js) - Google Analytics