--  存储过程结结构。
-- EXCeption不是存储过程必须部分,可以用作本存储过程的异常处理,但如果没有异常处理,出了异常将会终止程序
CREATE PROCEDURE procedure_name ()
IS/AS
BEGIN
-- ....
EXCEPTION
-- ...
END; -- PL/SQL代码块是什么?
-- 下面就是。
-- EXCeption不是PL/SQL必须部分,可以用作本PL/SQL代码块的异常处理,但如果没有异常处理,出了异常将会终止程序
BEGIN
-- ....
EXCEPTION
-- ...
END; -- ======================================
---- 昨天说,一个存储过程里可以有多个PL/SQL代码块
-- ======================================
--也就是说可以这样
CREATE PROCEDURE procedure_name ()
IS/AS
BEGIN
-- .PL/SQL代码块 1:
BEGIN
-- ....
-- 此处出了异常,
-- 因为作了处理,本代码块将不执行,但程序可以继续
-- 也就是说 PL/SQL代码块2 ,PL/SQL代码块3还可以执行
EXCEPTION --异常处理
-- ...
END; -- .PL/SQL代码块 2:
BEGIN
-- ....如果此处出了异常,
-- 因为本PL/SQL 未做异常处理,那么就只有两种结果
-- 1、存储过程有异常处理,可以处理这个异常,于存储过程的异常处理来说,只要进了这个异常,本PL/SQl代码做完异常处理后,程序也将无法继续
-- 2、存储过程有异常处理但无法处理该异常,或者存储过程没有异常处理,程序出错,将无法继续执行
-- 上面两种情况都会导致 ,程序无法继续,简单说, PL/SQL代码块3不会执行
END; -- .PL/SQL代码块 3:
BEGIN
--...
EXCEPTION
--..
END;
-- ... 存储过程的异常处理
EXCEPTION
-- ...。。
END;

eg:

DECLARE
v_my_err EXCEPTION;
v_i INTEGER ;
BEGIN
FOR v_i IN 1..10
LOOP
BEGIN
IF v_i=3 THEN
RAISE v_my_err;
ELSE
dbms_output.put_line(v_i);
END IF;
EXCEPTION
WHEN v_my_err THEN
dbms_output.put_line('我有异常处理,下面的继续');
END; BEGIN
IF v_i=6THEN
dbms_output.put_line('我没有异常处理,出了异常下面的不执行');
RAISE v_my_err;
ELSE
dbms_output.put_line(v_i);
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('出了异常,结束');
END;

Oracle SQL存储过程结构、异常处理示例的更多相关文章

  1. oracle sql 数结构表id降序

    UPDATE BAS_ORGANIZATION_TYPE T1SET T1.PARENTID=(select rn from (SELECT id,rownum rn FROM BAS_ORGANIZ ...

  2. SQL server 定时自动执行SQL存储过程

    当一个存储过程是为了生成报表,并且是周期性的,则不需要人工干预,由SQL作业定时自动执行些SQL存储过程即可. 本示例,假设已需要定时执行的存储过程为:Pr_test 工具/原料 SQL Server ...

  3. SQL Server数据库存储过程的异常处理

    SQL Server数据库存储过程的异常处理是非常重要的,明确的异常提示能够帮助我们快速地找到问题的根源,节省很多时间.本文我们就以一个插入数据为例来说明SQL Server中的存储过程怎么捕获异常的 ...

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

    程序异常是在操作期间正常,出现在节目的准备过程是不可避免的例外.但是,必须有一个相应的异常处理机 制,以保证程序的正常运行.PL/SQL程序运行过程中出现的错误.称为异常. 一个优秀的程序都应该可以正 ...

  5. sql:sql server,MySQL,PostgreSQL的表,视图,存储过程结构查询

    sql server 2005: --SQL SERVER 2005 生成代码需要知道的SQL语句 use LibrarySystem --查询当前数据库所有表和其的主键字段,字段类型,长度,是否为空 ...

  6. oracle pl/sql 存储过程

    存储过程用于执行特定的操作,当建立存储过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数,可以将执行部分的数据传递到 ...

  7. PL/SQL Developer中调试oracle的存储过程

    作者:iamlaosong 唉,真土,曾经用Toad.一直用dbms_output.put_line调试存储过程,仅仅认为不方便,用上PL/SQL Developer后,习惯性的还是用这种方法.人都是 ...

  8. C# 连接Oracle,并调用存储过程(存在返回值),C# 调用sql存储过程

    1.获取Oracle表格信息 public OracleHelpers(string ConnStr) { ConnectionString = ConnStr; conn = new OracleC ...

  9. SQL server 表结构转Oracle SQL脚本

    SQL server 表结构转Oracle SQL脚本 /****** Object: StoredProcedure [dbo].[getOracle] Script Date: 2019/7/25 ...

随机推荐

  1. SpringCloud+Eureka+Feign+Ribbon的简化搭建流程,加入熔断,网关和Redis缓存[2]

    目录 前提:本篇是基于 SpringCloud+Eureka+Feign+Ribbon的简化搭建流程和CRUD练习[1] 的修改与拓展 1.修改consumer的CenterFeign.java,把返 ...

  2. ws2_32.dll的妙用与删除 (禁网)

    ws2_32.dll是Windows Sockets应用程序接口,用于支持Internet和网络应用程序.程序运行时会自动调用ws2_32.dll文件,ws2_32.dll是个动态链接库文件位于系统文 ...

  3. SQLite、MySQL和PostgreSQL 三种关系数据库哪个好?

    关系型数据库的使用已经有相当长的时间了.它们变得流行起来托了管理系统的福,关系模型被实现得相当的好,并且被证明是操作数据的好方法(特别是事务性强的应用). 在这篇DigitalOcean文章中,我们将 ...

  4. B. Uniqueness 删除最小区间内的元素使得剩余元素唯一

    B. Uniqueness time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  5. 2016 黑客必备的Android应用都有哪些?

    免责声明:本站所发布的此份清单仅供学习之用.我们不支持读者利用其中的任何工具进行任何不道德的恶意攻击行为. 根据业界的一系列评测以及亲身经验,我们整理出了这份最佳Android黑客应用清单.除了对应用 ...

  6. 8核AMD Zen加持:微软Surface这回血拼

    微软定于10月2日在纽约举办Surface新品发布会,几乎全线消费级产品都将更新,比如15英寸Surface Laptop 3. 最新爆料称,15寸Surface Laptop 3预计一口气推出6款型 ...

  7. English_Rhymes_Phonics_resource

    English_Rhymes_Phonics_resource 1. 英语启蒙早有用吗?_英语启蒙 2. 26个英文字母背后的故事_英语启蒙 3. Phonics Song 4. 学Phonics前先 ...

  8. HTTP协议调试工具汇总

    前言 本文收集了大量抓包工具,近40款,涵盖了各种开发语言(Java,C#,Delphi,C,C++,Objective-C,Node.js,Go,Python).各类前端(GUI,TUI,CUI,W ...

  9. Metasploit学习笔记——移动环境渗透测试

    书364页配置假冒AP步骤,因为没有无线网卡,先跳过这个实验.

  10. 「JSOI2007」建筑抢修

    传送门 Luogu 解题思路 显然先把所有楼按照报废时间递增排序. 然后考虑 \(1\cdots i-1\) 都能修完, \(i\) 修不完的情况. 显然我们在这 \(i\) 个里面至多只能修 \(i ...