oracle中raise_application_error自定义错误。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中raise_application_error自定义错误。相关的知识,希望对你有一定的参考价值。

raise_application_error(-20001,'Rom is ready booked!');能详细讲解下这方法的使用场景吗?这方法能把错误码和提示文字赋给返回变量吗?

create index t_idx on t(nvl(x,-1));请问下这个索引,表t的x列什么查询条件时才会用到这个索引。

RAISE_APPLICATION_ERROR错误的原因:

调用DBMS_STANDARD(ORACLE提供的包)包所定义的RAISE_APPLICATION_ERROR过程,可以重新定义异常错误消息,将应用程序专有的错误从服务器端转达到客户端应用程序。它为应用程序提供了一种与ORACLE交互的方法。

用户定义的异常错误是通过显式使用RAISE语句来触发。

在PL/SQL 块的定义部分定义异常情况 ;RAISE <异常情况>;在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

语法如下:

1、RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors]);

2、error_number是从–20,000到–20,999之间的参数,这样就不会与ORACLE的任何错误代码发生冲突;

3、error_message 是相应的提示信息(< 2048 字节)。

keep_errors为可选,如果keep_errors=TRUE,则新错误将被添加到已经引发的错误列表中。如果keep_errors=FALSE(缺省),则新错误将替换当前的错误列表。

扩展资料:

ORACLE数据库系统为具有管理ORACLE数据库功能的计算机系统。每一个运行的ORACLE数据库与一个ORACLE实例(INSTANCE)相联系。

一个ORACLE实例为存取和控制一数据库的软件机制。每一次在数据库服务器上启动一数据库时,称为系统全局区(SYSTEMGLOBALAREA)的一内存区(简称SGA)被分配,有一个或多个ORACLE进程被启动。

该SGA 和 ORACLE进程的结合称为一个ORACLE数据库实例。一个实例的SGA和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。

该SGA 和 ORACLE进程的结合称为一个ORACLE数据库实例。一个实例的SGA和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。

参考资料:百度百科-Oracle系统

参考技术A 看一个例子吧!
eg:
CREATE OR REPLACE TRIGGER change_teacher
BEFORE INSERT OR UPDATE OR DELETE ON teachers
BEGIN
IF (TO_CHAR(SYSDATE, 'HH24') NOT BETWEEN '8' AND '17')
OR (TO_CHAR(SYSDATE, 'DY',
'nls date_langudage = american') IN ('SAT', 'SUN'))
THEN
CASE
WHEN INSERTING THEN
RAISE_APPLICATION_ERROR
(-20001, '在非工作时间不能增加教师信息。');
WHEN UPDATING THEN
RAISE_APPLICATION_ERROR
(-20002, '在非工作时间不能修改教师信息。');
WHEN DELETING THEN
RAISE_APPLICATION_ERROR
(-20003, '在非工作时间不能删除教师信息。');
END CASE;
END IF;
END change_teacher;

DELETE FROM teachers;本回答被提问者采纳
参考技术B RAISE_APPLICATION_ERROR 是将应用程序专有的错误从服务器端转达到客户端应用程序(其他机器上的SQLPLUS或者其他前台开发语言)

RAISE_APPLICATION_ERROR 的声明:

PROCEDURE RAISE_APPLICATION_ERROR( error_number_in IN NUMBER, error_msg_in IN VARCHAR2);
里面的错误代码和内容,都是自定义的。说明是自定义,当然就不是系统中已经命名存在的错误类别,是属于一种自定义事务错误类型,才调用此函数。error_number_in 之容许从 -20000 到 -20999 之间,这样就不会与 ORACLE 的任何错误代码发生冲突。error_msg_in 的长度不能超过 2k,否则截取 2k。

以上是关于oracle中raise_application_error自定义错误。的主要内容,如果未能解决你的问题,请参考以下文章

在 SQLAlchemy 中使用 Oracle 服务名称

由于系统错误代码 998,无法加载 Instantclient_12_1 ODBC 驱动程序中 Oracle 的设置例程

oracle 11G补丁(p6890831_111070_AIX5L_1of2.zip)安装方法

oracle中类似indexof用法_instr函数

oracle中for循环的问题

重构 Oracle 存储过程以使用 BULK COLLECT