数据库中的异常(预定义,非预定义,用户自定义)

DECLARE   --预定义 异常信息 不声明异常
   v_empno emp.empno%TYPE :=&empno;

   v_sal    emp.sal%TYPE;
BEGIN
   SELECT sal INTO v_sal FROM emp WHERE empno=v_empno;
   IF v_sal<=1500 THEN
        UPDATE emp SET sal=sal+100 WHERE empno=v_empno;
        DBMS_OUTPUT.PUT_LINE(‘编码为‘||v_empno||‘员工工资已更新!‘);
   ELSE
        DBMS_OUTPUT.PUT_LINE(‘编码为‘||v_empno||‘员工工资已经超过规定值!‘);
   END IF; 

END; 

------------------------------------------------------------------------------------------------------
--用户自定义异常
   DECLARE
   v_empno emp.empno%TYPE :=&empno;
 --声明变量V_empno,类型 emp.empno%TYPE 类型与emp表empno列类型一致
   no_result  EXCEPTION;
   --声明一个异常 名为 no_result
BEGIN
   UPDATE emp SET sal=sal+100 WHERE empno=v_empno;
   IF SQL%NOTFOUND THEN
      RAISE no_result;--触发异常                      -- raise触发
   END IF;
EXCEPTION
   WHEN no_result THEN --当异常被触发
      DBMS_OUTPUT.PUT_LINE(‘你的数据更新语句失败了!‘);

   WHEN OTHERS THEN                                   --可以理解为异常包,接收 定义异常之外的 异常
     DBMS_OUTPUT.PUT_LINE(SQLCODE||‘---‘||SQLERRM);
END;
-------------------------------------------------------------------------------------------------------
--非预定义异常

  -- 在PL/SQL 块的声明部分定义异常情况:
    --<异常情况>  EXCEPTION;
  --将其定义好的异常情况,与标准的ORACLE错误联系起来,使用EXCEPTION_INIT语句
  --PRAGMA EXCEPTION_INIT(<异常情况>, <错误代码>);
  --在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理

DECLARE
   v_deptno dept.deptno%TYPE :=&deptno;
   deptno_remaining EXCEPTION;--声明异常
   ---
   PRAGMA EXCEPTION_INIT( deptno_remaining,     -2292);/* -2292 是违反一致性约束的错误代码 */
                          --异常情况         --oracle错误代码

  /* 如果oracle语句执行中出现-2292错误,则触发deptno_remaining异常*/
   ---
BEGIN
   DELETE FROM dept WHERE deptno=v_deptno;
EXCEPTION
   WHEN deptno_remaining THEN
      DBMS_OUTPUT.PUT_LINE(‘违反数据完整性约束!‘);
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE(SQLCODE||‘---‘||SQLERRM);
END;
-------------------------------------------------------------------------------------------------------
时间: 2024-08-07 05:22:48

数据库中的异常(预定义,非预定义,用户自定义)的相关文章

数据库中的聚集索引、非聚集索引、优化索引

这篇文章我们来讨论一下索引的问题吧,这篇文章不会介绍怎么创建索引,但是会介绍怎么优化索引. 什么是索引? 索引是对记录按照多个字段进行排序的一种方式.对表中的某个字段建立索引会创建另一种数据结构,其中保存着字段的值,每个值又指向与它相关的记录.这种索引的数据结构是经过排序的,因而可以对其执行二分查找. 怎么理解索引呢?我们经常用在windows系统下,查询某些文件,系统都会建议我们建立文件的索引.比如,如果你要查询一个文件名,系统要扫描所有文件进行傻瓜式地扫描,速度当然会很慢.当我们建立了索引后

数据库中的基本概念

在同一个数据集合中,不同的选择条件对应了不同的输出结果,数据库就是这样一种按数据结构来组织.存储和管理数据的仓库.程序或用户可以通过它来进行数据的访问与修改,它是数据存储的灵魂. 数据管理经历了人工管理.文件系统到数据库系统3个阶段.数据库是具有逻辑关系和确定意义的数据结合,它能克服传统文件组织所产生的一系列问题,数据冗余小,由于关系型数据库管理系统对于信息查询具有很大的灵活性,并且设计简单,所以已经被广泛使用在了实际的系统开发中. 关系数据库系统与文件数据库系统区别 SQL语言的功能有哪些 内

关于mybatis中的实体类属性与数据库中的列名不一致的两种解决方法

1.我们都知道,在mybatis中写实体类的时候,是按照数据库中的列名来给实体类定义属性的,举个例子: public class User implements Serializable { private Integer id; private String username; private String address; private String sex; private Date birthday; } 2.但是,如果我们在定义实体类的时候,实体类中的属性与数据库列名不一致呢?比如:

java中的“异常”

异常:Java运行期间发生的问题就是异常,另外,Java中运行时发生的除了异常Exception还有错误Error. 异常:可以有针对性的处理方式:错误:通常发生后不会有针对性的处理方式,往往是系统级别的问题,无法针对处理,只能修正代码. 举个例子:对给定的数组同过给定的交表获取元素, class Demo { /* 对给定的数组通过给定的角标获取元素. */ int getElement(int[] arr,int index) { /* 它所提供的信息不够给力.想要更清晰,需要自己写. 它的

非关系型数据库中的「关系」实现

Knowledge Dependence:阅读文本前,你需要了解基本的关系型数据库与非关系型(NoSQL)数据库的概念和区别,以及 MongoDB(Mongoose)的简单实践. ? 这两三年来,伴随着大数据(Big Data)的空前火热,无论是在工程界还是科研界,非关系型数据库(NoSQL)都已经成为了一个热门话题. 相比于传统的关系型数据库,非关系型数据库天生从理念上就给数据存储提供了一种新的思路.而在实际应用中,它往往更轻巧灵活.扩展性高,并且更能胜任高性能.大数据量的场景. 值得一提的是

从Mybatis中#和$的区别到SQL预编译

#和$的区别 Mybatis中参数传递可以通过#和$设置.它们的区别是什么呢? # Mybatis在解析SQL语句时,sql语句中的参数会被预编译为占位符问号? $ Mybatis在解析SQL语句时,SQL语句中的参数会被当做字符串拼接SQL. 使用#能够防止SQL注入攻击. 那么什么是预编译? 什么是预编译 通常,一条sql在db接收到最终执行完毕返回需要经历三个阶段: 词法和语义解析 优化sql语句,制定执行计划 执行并返回结果 但是如果同样一条SQL,如果只是参数值变了,不需要每次都语法语

N个状态在数据库中的简便使用定义方式

我们在做项目的时候(比如做一个消息的状态,它有:已发送,已阅读,已删除,已回复等等),像这样的情况的时候,我们一般的做法是在数据库中加入N个字段来存放它的状态. 但是如果我们需要增加一个状态的时候怎么办呢,继续去修改数据库吗?这样明显不行,这里我向大家推荐一种方式: 使用一个字段来存所有状态. 首先我们这个状态应该是个什么样子呢,朋友向我推荐了一种方式:二进制. 为什么是二进制呢,因为像这种状态的字段我们一般都是用一个Ture/False去判断吧,这样就说的通了,我们先用二进制来试试.而且使用二

mongo数据库中一条记录中某个属性是数组情形时 数据结构的定义

package entity; import java.util.Date; import com.mongodb.BasicDBList;import com.mongodb.DBObject; public class CommonEditEntity { /** 数据库中查询记录结果 */ private DBObject record; /** 数据库默认id */ private String _id; /** 项目id */ private String project_id; /*

java中异常(Exception)的定义,意义和用法。举例

1.异常(Exception)的定义,意义和用法 (视频下载) (全部书籍) 我们先给出一个例子,看看异常有什么用? 例:1.1-本章源码 public class Test {    public static void main(String[] args) {        int userInput=0;        int I = 6 / userInput;        System.out.println("马克-to-win:优雅结束");    }} 输出结果: