oracle的异常处理

  /**
     写入自动施封命令:【同步webservice使用】
     wyg 2017-03-12
  */
  PROCEDURE ISDT_VEHICLE_AutoLock(P_WID       IN VARCHAR2,
                                  P_VEHICLENO IN VARCHAR2,
                                  P_STATE     OUT INT,
                                  P_MSG       OUT VARCHAR2) IS
  BEGIN
    insert into t_isdt_elockautorequest
      (requestid,
       wid,
       vehicleno,
       operatetype,
       created_date,
       last_updated_date)
    values
      (sys_guid(), P_WID, P_VEHICLENO, 1, sysdate, sysdate);
    COMMIT;
    P_STATE := 1;
    P_MSG   := ‘success‘;
  EXCEPTION
    WHEN OTHERS THEN
      rollback;
      P_STATE := 0;
      P_MSG   := SUBSTRB(‘line:‘ || dbms_utility.format_error_backtrace() ||
                         ‘ Occur error;‘ || SQLCODE || ‘,‘ || SQLERRM,
                         1,
                         200);
  END;

  

 EXCEPTION
    WHEN DUP_VAL_ON_INDEX THEN
      INSERT INTO t_isdt_vehicle_track_err
        (car_num,
         gpstime,
         lon,
         lat,
         speed,
         direction,
         odometer,
         statusstr,
         placeroad,
         created_date,
         CREATED_BY)
      VALUES
        (P_CAR_NUM,
         P_GPSTIME,
         P_LON,
         P_LAT,
         P_SPEED,
         P_DIRECTION,
         P_ODOMETER,
         P_STATUSSTR,
         P_PLACEROAD,
         SYSDATE,
         1);
      P_STATE := 0;
      P_MSG   := SUBSTRB(‘line:‘ || dbms_utility.format_error_backtrace() ||
                         ‘ Occur error;‘ || SQLCODE || ‘,‘ || SQLERRM,
                         1,
                         200);
      COMMIT;
    WHEN OTHERS THEN
      ROLLBACK;
      P_STATE := 0;
      P_MSG   := SUBSTRB(‘line:‘ || dbms_utility.format_error_backtrace() ||
                         ‘ Occur error;‘ || SQLCODE || ‘,‘ || SQLERRM,
                         1,
                         200);

显示结果:

ine:ORA-06512: 在 "employeDB.__DATA_SYNC", line 512
Occur error;-12899,ORA-12899: 列 "EMS"."T_ISDT_ELOCKAUTOREQUEST"."WID" 的值太大 (实际值: 137, 最大值: 50)

时间: 2024-10-20 14:14:50

oracle的异常处理的相关文章

Oracle 存储过程异常处理

Oracle 存储过程异常处理 1.异常的优点    如果没有异常,在程序中,应当检查每个命令的成功还是失败,如  BEGIN  SELECT ...  -- check for ’no data found’ error  SELECT ...  -- check for ’no data found’ error  SELECT ...  -- check for ’no data found’ error  这种实现的方法缺点在于错误处理没有与正常处理分开,可读性差,使用异常,可以方便处理

Oracle SQL 异常处理

今天学了异常处理 有预定义异常 与 用户自定义异常 还有 raise_application_error()函数raise_application_error() 只能把异常抛出而不能处理异常. 预定义异常包括– NO_DATA_FOUND --没有找到数据– TOO_MANY_ROWS --找到多行数据– INVALID_CURSOR --失效的游标– ZERO_DIVIDE --除数为零– DUP_VAL_ON_INDEX –唯一索引中插入了重复值 预定义异常的示例: declare v_i

Oracle学习(11):PLSQL程序设计

PL/SQL程序结构及组成 什么是PL/SQL? ?PL/SQL(Procedure Language/SQL) ?PLSQL是Oracle对sql语言的过程化扩展 ?指在SQL命令语言中增加了过程处理语句(如分支.循环等),使SQL语言具有过程处理能力. SQL优点 交互式非过程化: 数据操纵功能强: 自动导航语句简单: 调试容易使用方便. 把SQL语言的数据操纵能力与过程语言的数据处理能力结合起来,使得PLSQL面向过程但比过程语言简单.高效.灵活和实用. 常用的结合语言 lPlsql(or

Oracle学习(十一):PL/SQL

1.知识点:可以对照下面的录屏进行阅读 PL/SQL程序结构 declare 说明部分 (变量说明,光标申明,例外说明 ] begin 语句序列 (DML语句]- exception 例外处理语句 End; / ------------------------------------------------------------------ --第一个PL/SQL程序:HelloWorld set serveroutput on --如果要在屏幕上输出信息,需要将serveroutput开关打

java7 异常处理增强

在Java 7发行版中,oracle在异常处理机制上也做了一些不错的更改.这些主要是改进的catch块和多余的throws子句.让我们看看他们是如何改变的. 1.改进了Java 7中的catch块 在此功能中,现在您可以在单个catch块中捕获多个异常.在Java 7之前,您只能在每个catch块中仅捕获一个异常.要指定期望的例外列表,使用竖线('|')字符.Java程序可在单个catch块中捕获多个异常. try { //Do some processing which throws Null

Oracle 异常处理

1.什么是异常 在PL/SQL中的一个警告或错误的情形都可被称为异常.包括编译时错误(PLS)和运行时错误(ORA).一个异常通常包含一个错误代码和错误文本,分别指示异常的编号和具体错误信息. 异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行. 2.异常的分类 1. 预定义 ( Predefined )错误 ORACLE预定义的异常情况大约有24个

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

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

Oracle异常处理,动态游标

小例子,方便以后查阅. 包头需要声明:   type C_CURSOR is ref cursor; procedure visitcount(in_date number, out_code out number, out_desc out varchar2 ) is t_date number(8); t_datepre number(8); t_sql varchar2(2000); t_tempcount number(8); c_data C_CURSOR; v_cityname va

【Oracle】第四章异常处理

第四章异常处理 PL/SQL 块是构成 PL/SQL 程序的基本单元 将逻辑上相关的声明和语句组合在一起 PL/SQL 分为三个部分,声明部分.可执行部分和异常处理部分 [DECLARE declarations] BEGIN executable statements [EXCEPTION handlers] END; 以下示例演示了如何使用PL/SQL 语句: declare area integer; width integer; height integer; currentdate d