Oracle SQL存储过程结构、异常处理示例
-- 存储过程结结构。
-- 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存储过程结构、异常处理示例的更多相关文章
- oracle sql 数结构表id降序
UPDATE BAS_ORGANIZATION_TYPE T1SET T1.PARENTID=(select rn from (SELECT id,rownum rn FROM BAS_ORGANIZ ...
- SQL server 定时自动执行SQL存储过程
当一个存储过程是为了生成报表,并且是周期性的,则不需要人工干预,由SQL作业定时自动执行些SQL存储过程即可. 本示例,假设已需要定时执行的存储过程为:Pr_test 工具/原料 SQL Server ...
- SQL Server数据库存储过程的异常处理
SQL Server数据库存储过程的异常处理是非常重要的,明确的异常提示能够帮助我们快速地找到问题的根源,节省很多时间.本文我们就以一个插入数据为例来说明SQL Server中的存储过程怎么捕获异常的 ...
- Oracle 学习笔记 17 -- 异常处理(PL/SQL)
程序异常是在操作期间正常,出现在节目的准备过程是不可避免的例外.但是,必须有一个相应的异常处理机 制,以保证程序的正常运行.PL/SQL程序运行过程中出现的错误.称为异常. 一个优秀的程序都应该可以正 ...
- sql:sql server,MySQL,PostgreSQL的表,视图,存储过程结构查询
sql server 2005: --SQL SERVER 2005 生成代码需要知道的SQL语句 use LibrarySystem --查询当前数据库所有表和其的主键字段,字段类型,长度,是否为空 ...
- oracle pl/sql 存储过程
存储过程用于执行特定的操作,当建立存储过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数,可以将执行部分的数据传递到 ...
- PL/SQL Developer中调试oracle的存储过程
作者:iamlaosong 唉,真土,曾经用Toad.一直用dbms_output.put_line调试存储过程,仅仅认为不方便,用上PL/SQL Developer后,习惯性的还是用这种方法.人都是 ...
- C# 连接Oracle,并调用存储过程(存在返回值),C# 调用sql存储过程
1.获取Oracle表格信息 public OracleHelpers(string ConnStr) { ConnectionString = ConnStr; conn = new OracleC ...
- SQL server 表结构转Oracle SQL脚本
SQL server 表结构转Oracle SQL脚本 /****** Object: StoredProcedure [dbo].[getOracle] Script Date: 2019/7/25 ...
随机推荐
- 设计模式课程 设计模式精讲 7-3 建造者模式源码解析(jdk+guava+spring+mybaties)
1 源码解析 1.1 jdk解析 1.2 guava解析 1.3 spring解析 1.4 mybaties解析 1 源码解析 1.1 jdk解析 String public StringBuilde ...
- Dubbo与SpringBoot整合流程(从实例入手,附代码下载)
场景 Dubbo环境搭建-管理控制台dubbo-admin实现服务监控: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10362 ...
- Mybatis入门(六)联查之一对多
上一章说了多对一,很多学生被一个老师教,这一章是一个老师教很多学生 目录基本没有变化只是改了配置文件: 2.配置文件: TeacherMapper接口类: package com.hdlf.dao; ...
- 「牛客CSP-S2019赛前集训营2」服务器需求
传送门 NowCoder 解题思路 考虑一种贪心选择方法:每次选出最大的 \(m\) 个 \(a_i\) 进行覆盖. 那么就会出现一种特殊情况,最高的那个 \(a_i\) 需要多次选择,而且不得不每次 ...
- WebAPI实例
@{ ViewBag.Title = "About"; } @*<script src="~/Scripts/jquery-1.7.1.min.js"&g ...
- leetcode813 Largest Sum of Averages
""" We partition a row of numbers A into at most K adjacent (non-empty) groups, then ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:自适应大小的按钮组
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- P1077 互评成绩计算
P1077 互评成绩计算 转跳点:
- Python实现的远程登录windows系统功能示例
https://www.jb51.net/article/142326.htm 重点是这几本书要好好读读!: 更多关于Python相关内容感兴趣的读者可查看本站专题:<Python进程与线程操作 ...
- Oracle 的DBA考证
转自 :https://www.cnblogs.com/chunge2050/archive/2013/04/16/3023730.html 详细的了解了几天之后,总结起来就是oracle为DBA认证 ...