--  存储过程结结构。
-- 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. redhat 7.6 用户和组

    用户 useradd   user1     //新建用户user1 userdel   user1   //删除用户user1 userdel  -r   user1     //删除用户并且删除h ...

  2. uniGUI之新窗口uniForm(19)

    然后 保存,在这里 重命名窗口 //主窗口 调用 // NewForm2.UniForm1.Show() ; //非阻塞 NewForm2.UniForm1.ShowModal();//阻塞 //子窗 ...

  3. Python3---常见函数---range()用法

    0X01函数说明: python range() 函数可创建一个整数列表,一般用在 for 循环中. 0X02函数语法: range(start,stop[,step]) start: 计数从 sta ...

  4. 记录:一次使用私有LoadBalance provider,工具metallb的故障排除

    使用metallb工具,目的是为私有环境下,不借助GRE或Azure等云商的LB, 通过metallb-system工具IP池给k8s service提供external-ip.但是,由于设置meta ...

  5. ssh_crm项目

    1.代码 https://pan.baidu.com/s/1hudAhA8  密码:c7xu 2.总结 https://pan.baidu.com/s/1o9ArFf0 密码:hteu 3.资料 ht ...

  6. Wepy框架和mpVue框架的比较及使用mpVue框架需要注意的点

    Wepy框架 它是一款类Vue框架,在代码风格上借鉴了Vue,本身和Vue没有任何关系. mpVue框架 它是从整个Vue的核心代码上经过二次开发而形成的一个框架,相当于是给Vue本身赋能,增加了开发 ...

  7. QQ企业通--客户端登陆模块设计---知识点

    AutoValidate 枚举  确定控件在失去用户输入焦点时应如何验证其数据. 成员名称 说明 Disable 将不进行隐式验证.设置此值将不会妨碍对 Validate 或 ValidateChil ...

  8. java并发:初探sleep方法

    sleep与wait sleep是Thread方法,使得当前线程从运行态变为阻塞态.但它不会释放对象的锁. wait方法是Object方法,它的作用是使得当前拥有对象锁的线程从运行态变为阻塞态, 它会 ...

  9. linux 串口 拼帧处理

    串口每次read数据可能不是完整的数据,参照网上的代码,写了拼帧的代码#include <stdio.h> #include <termios.h> #include < ...

  10. 「Luogu2264」情书

    传送门 Luogu 解题思路 字符串模拟SB题,STL随便搞. 详情见代码. 细节注意事项 STL总得会吧. 参考代码 #include <algorithm> #include < ...