Oracle 游标示例,带异常处理

Oracle游标示例一则,带异常处理。

DECLARE
        CURSOR c_dl IS
            SELECT ID, NSRSBH, WSPZXH, ZXYY_DM, HZRQ, SWJG_DM, GXSJ
              FROM T_GUOS_ZXXX
             WHERE gxsj > begin_gxsj;
        c_row c_dl%ROWTYPE;
    BEGIN
        FOR c_row IN c_dl LOOP
            BEGIN
                IF (c_row.GXSJ > max_gxsj) THEN
                    BEGIN
                        max_gxsj := c_row.GXSJ;
                    END;
                END IF;
                handled_count := handled_count + 1;
                --
                MERGE INTO T_FR_GUOSZX T
                USING (SELECT c_row.NSRSBH  NSRSBH,
                              c_row.WSPZXH  WSPZXH,
                              c_row.ZXYY_DM ZXYY_DM,
                              c_row.HZRQ    HZRQ,
                              c_row.SWJG_DM SWJG_DM,
                              c_row.GXSJ    GXSJ
                         FROM dual) NT
                ON (T.NSRSBH = NT.NSRSBH)
                WHEN MATCHED THEN
                    UPDATE
                       SET ZXWSXH = NT.WSPZXH
                WHEN NOT MATCHED THEN
                    INSERT
                        (ID, NSRSBH, ZXWSXH, ZXYY, ZXRQ, ZXJG, GXSJ)
                    VALUES
                    ...
                COMMIT;
                --当出现异常时,将异常插入日志表,并继续下一次循环
            EXCEPTION
                WHEN OTHERS THEN
                    ROLLBACK;
                    error_count := error_count + 1;
                    errorcode   := SQLCODE;
                    errmsg      := SQLERRM;
                    BEGIN
                        --执行出错时,将错误信息记录到日志表
                 COMMIT;
                    END;
            END;
        END LOOP;
    END;
时间: 2024-08-08 13:58:17

Oracle 游标示例,带异常处理的相关文章

Oracle游标示例

-- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标 --(1)定义游标 --(2)定义游标变量 --(3)使用for循环来使用这个游标 declare --类型定义 cursor c_job is select empno,ename,job,sal from emp where job='MANAGER'; --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型 c_row c_j

oracle 游标简单示例

1.游标的概念以及作用 游标(Cursor)可以使用户想操作数组一样对查询出来的结果集进行操作,可以形象的看做一个变动的光标,其实际行是一个指针,它在一段Oracle存放数据查询结果集或数据 操作集的内存中,这个指针可以指向结果集的任何位置. 分类: 分为静态游标和ref游标(暂不做介绍).静态游标 又分为 显示游标和隐式游标 ,隐式游标它是被oracle自动管理的 ,不需要详细的去了解只需要 知道怎么用就可以了. 显示游标:就是我们普遍使用的.就是在使用之前有着明确的定义,一般都会关联数据查询

Oracle游标--cursor_01-简单不带参数实现功能

对于游标这个概念,可以理解为类似我们以前学习的jdbc的结果集对象, 我们可以使用游标对结果集从上到下进行遍历,获取每一行内容 首先我们要分析一下游标的分类 带参数的 书写函数的整体架构 定义游标 开启游标 关闭游标 不带参数 举个栗子:查询oracle数据库emp表的所有员工的姓名和工资 --开启远程访问 set serveroutput on; declare -- 变量声明 cursor cemp is select from ename,esal from emp; cename emp

Oracle游标带参数

Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * from d where id=c_id; begin open b(111); end;

[转载]oracle游标概念讲解

原文URL:http://www.2cto.com/database/201203/122387.html ORACLE游标概念讲解 什么是游标?  ①从表中检索出结果集,从中每次指向一条记录进行交互的机制.      ②关系数据库中的操作是在完整的行集合上执行的.   由SELECT 语句返回的行集合包括满足该语句的WHERE 子句所列条件的所有行.由该语句返回完整的行集合叫做结果集.      应用程序,尤其是互动和在线应用程序,把完整的结果集作为一个单元处理并不总是有效的.      这些

Duang!危险的oracle游标

1.引言 SQL是面向集合的语言,其结果一般是集合量(含多条记录),而pl/sql的变量是标量,一组变量一次只能存放一条记录.很多时候查询结果的记录数是不确定的,无法提前声明足够的变量.于是引入了游标的概念,游标使得数据库操作更灵活,但同时也给黑客入侵数据库带来了机会.安华金和数据库安全实验室(DBSec Labs)基于游标的应用原理,本文讨论游标可能带来什么安全隐患以及如何应对这些安全隐患. 2.游标的分类 oracle数据库游标是Pl/sql执行DQL.DML等语句的时候,oracle在内存

ORACLE游标概念讲解

1,什么是游标? ①从表中检索出结果集,从中每次指向一条记录进行交互的机制. ②关系数据库中的操作是在完整的行集合上执行的.   由 SELECT 语句返回的行集合包括满足该语句的 WHERE 子句所列条件的所有行.由该语句返回完整的行集合叫做结果集.      应用程序,尤其是互动和在线应用程序,把完整的结果集作为一个单元处理并不总是有效的.      这些应用程序需要一种机制来一次处理一行或连续的几行.而游标是对提供这一机制的结果集的扩展.      游标是通过游标库来实现的.游标库是常常作

Oracle 学习笔记 17 -- 异常处理(PL/SQL)

程序在执行过程中出现异常是正常的,在程序的编写过程中出现异常也是不可避免的.但是要有相应的异常处理的机 制,来保证程序的正常执行.PL/SQL程序执行过程中出现的错误,称为异常.一个优秀的程序都应该能够正确处理 各种出错的情况,并尽可能的从错误中恢复.PL/SQL提供了异常处理机制. 概念: 异常处理(exception)是用来处理正常执行过程中未预料的事件,程序块的异常处理定义的错误和自定义的错误, 由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会异常的终止. 有三种类型的错误

Oracle 游标

1.概念     游标是指向SQL处理的内存区的句柄或指针.当使用一个PL/SQL块来执行DML语句或只返回一行结果的SELECT语句时,系统将自动创建一个隐式游标.如果SQL语句返回多个结果,就必须创建一个显示游标. --游标的属性 --(1)cur_name%rowcount :指出处理的行数 -- (2) cur_name%found :处理了一行或多行返回TRUE否则FALSE 如 WHILE CUR%FOUND中 --(3)cur_name%notfound :如果没有处理行返回TRU