首页
学习
活动
专区
圈层
工具
发布

Oracle PLSQL中异常高级特性

本文只介绍3中PL/SQL异常的三种高级形态,用于解决Oracle内置异常过少,很多时候不能够满足实际的使用需求。...1,RAISE_APPLICATION_ERROR  - 是Oracle提供的一种特殊的内置过程,允许程序员为特定的程序创建有意义的错误消息,适用于用户自定义定义异常。  ...- 是哟个raise_application_error,程序员可以使程序实现像Oracle系统产生的错误消息。  ...3,SQLCODE 和 SQLERRM  - 在异常处理中,当异常的名称未知时(比如上面1中RAISE_APPLICATION_ERROR),都可以使用others来进行异常的捕获处理;  - 由于others...所捕获的异常是未知的(也可以是已知的,但是在程序中没有将其枚举出来),因此需要使用Oracle提供的两个内置函数SQLCODE、SQLERRM来针对others的异常进行处理:  - SQLCODE 会返回

1K10

等保测评2.0:Oracle身份鉴别

一、说明 本篇文章主要说一说oracle数据库中身份鉴别控制点中测评项a的相关内容和理解。...那么只要oracle数据库中建立一个名为opscv的账户并给与基础权限(连接权限等),用户在登录操作系统中的cv后,可以直接使用sqlplus /或sqlplus / as normal(两个命令是一个意思...第二个方面就是在oracle中是否设置了口令复杂度策略,这里要看的就是配置表中的PASSWORD_VERIFY_FUNCTION字段的值: select * from dba_profiles; ?...好,咱们说一说PASSWORD_VERIFY_FUNCTION字段是什么意思,该字段的值应该为oracle中某函数对象的名字,当创建、更改用户口令时会调用到该函数对口令进行校验,默认情况下这里的值是null...simple'); END IF; 检查口令是否是oracle1到oracle100中的一个,不过这里口令可以等于oracle,不知道为啥这里是否等于oracle的校验 -- Check

6.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用触发器实现数据库级守护,防止DDL操作

    你可能会遇到数据库中重要的数据表等对象被drop掉的情况,这可能会给我们带来巨大的损失....通过触发器,我们可以实现对于表等对象的数据库级守护,禁止用户drop操作....ORA-06512: at line 4 Oracle从Oracle8i开始,允许实施DDL事件trigger,可是实现对于DDL的监视及控制,以下是一个进一步的例子: create or replace...have no permission to this operation ORA-06512: at line 11 我们可以看到,ddl语句都被禁止了,如果你不是禁止,可以选择把执行这些操作的用户及时间记录到另外的临时表中...本文作者: eygle,Oracle技术关注者,来自中国最大的Oracle技术论坛itpub. www.eygle.com是作者的个人站点.你可通过Guoqiang.Gai@gmail.com来联系作者

    1.5K50

    oracle中number的用法,Oracle Number数字

    大家好,又见面了,我是你们的朋友全栈君。 oracle函数 的 Oracle Number数字 在本教程中,您将学习Oracle NUMBER数据类型以及如何使用它来为表定义数字列。...Oracle NUMBER数据类型简介 Oracle NUMBER数据类型用于存储可能为负值或正值的数值。...以下说明了NUMBER数据类型的语法: NUMBER[(precision [, scale])] Oracle NUMBER数据类型具有以下精度和尺度。 精度是一个数字中的位数。 范围从1到38。...NUMBER(5,-2) 请注意,如果在NUMBER(p,s)列中数字,并且数字超过精度p,则Oracle将发出错误。 但是,如果数量超过尺度s,则Oracle将对该值进行四舍五入。...它们不是真正的数据类型。 Oracle在内部将这些别名映射到相应的NUMBER数据类型。 在本教程中,您已经学习了Oracle NUMBER数据类型以及如何使用它来为表定义数字列。

    2.7K20

    Oracle数据库,浅谈PLSQL异常处理

    众所周知,程序的错误一般情况下分为两类:编译错误和运行时错误。其中运行时错误被称为异常。PL/SQL语句块中处理异常的部分即为异常处理部分。在异常处理部分,可以指定当特定异常发生时所采取的动作。...为在程序中处理这种类型的错误,必须添加异常处理部分。...上述NO_DATA_FOUND即为Oracle预定义异常。 二、 用户自定义异常 通常,在自己的程序里,也许需要处理与所写程序相关的问题。例如,在上个语句块中,需要输入员工编号。...RAISE_APPLICATION_ERROR是oracle提供的一种特殊的内置过程,允许编程人员为特定应用程序创建有意义的错误信息。...过程,编程人员能够遵循与Oracle错误一致的方式返回错误信息。

    1.1K20

    【DB笔试面试576】在Oracle中,简述Oracle中的游标。

    ♣ 题目部分 在Oracle中,简述Oracle中的游标。 ♣ 答案部分 在介绍游标之前先介绍一下Oracle数据库中库缓存(Library Cache)的作用及其组成结构。...由于库缓存对象句柄是以哈希表(Hash Table)的方式存储在库缓存中的,哈希表就是很多Hash Bucket组成的数组,所以,Oracle会通过相关的哈希运算来存储和访问对应的库缓存对象句柄。...例如,Oracle可以通过访问某个库缓存对象的Heap 0中的Child table而依次顺序访问从属于该对象的所有子库缓存对象。...Oracle会用Data Heap来存储这些动态运行时数据,所谓的“Data Heap”,可以简单地理解成是库缓存中的一块连续的内存区域,Data Heap是动态分配的,其大小并不固定。...各个Data Heap之间是独立的,没有关联关系,Oracle会在Heap 0的属性“Data Blocks Pointer”中存储指向这些Data Heap的指针,这样Oracle通过访问Heap 0

    1.9K20

    Oracle中的SQL优化

    不允许字段为空,而用一个缺省值代替空值,如业扩申请中状态字段不允许为空,缺省为申请。    ...实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。...DLYX.ZLYHJBQK(中间多了空格)     以上四个SQL在ORACLE分析整理之后产生的结果及执行的时间是一样的,但是从ORACLE共享内存SGA的原理,可以得出ORACLE对每个SQL 都会对其进行一次分析...b.查询表顺序的影响     在FROM后面的表中的列表顺序会对SQL执行性能影响,在没有索引及ORACLE没有对表进行统计分析的情况下ORACLE会按表出现的顺序进行链接,由此因为表的顺序不对会产生十分耗服务器资源的数据交叉...(如并行处理等等)     ORACLE的提示功能是比较强的功能,也是比较复杂的应用,并且提示只是给ORACLE执行的一个建议,有时如果出于成本方面的考虑ORACLE也可能不会按提示进行。

    2.7K20

    Oracle使用总结之异常篇

    对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。 2. 非预定义 ( Predefined )错误 即其他标准的ORACLE错误。...对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。 3. 用户定义(User_define) 错误 程序执行过程中,出现编程人员认为的非正常情况。...(ORACLE提供的包)包所定义的RAISE_APPLICATION_ERROR过程,可以重新定义异常错误消息,它为应用程序提供了一种与ORACLE交互的方法。...用户自定义异常由开发者显示定义,在PL/SQL块中传递信息以控制对于应用的错误处理。 每当PL/SQL违背了ORACLE原则或超越了系统依赖的原则就会隐式的产生内部异常。...因为每个ORACLE错误都有一个号码并且在PL/SQL中异常通过名字处理,ORACLE提供了预定义的内部异常。如SELECT INTO 语句不返回行时产生的ORACLE异常NO_DATA_FOUND。

    2.4K60

    PLSQL-->UTL_FILE包的使用介绍

    在PL/SQL中,UTL_FILE包提供了文本文件输入和输出互功能。也就是说我们可以通过该包实现从操作系统级别来实现文件读取输入或者是写入到操作系统文件。...通过该包也可以将其他系统的数据加载到数据库中。如加载web服务器日志,用户登录数据库日志乃至Oracle日志文件等等。...以及授予对directory权限来进行访问os文件(推荐方式) 2、UTL_FILE包中的过程和函数 a、UTL_FILE中定义的file_type为记录类型,如下所示其成员是私有的,不能够被直接引用或改变这个记录的组件...id          BINARY_INTEGER,       datatype    BINARY_INTEGER,       byte_mode   BOOLEAN); b、UTL_FILE中相关过程函数的功能说明...否则会遭遇“ORA-29280: invalid directory path”错误 主要参考: http://psoug.org/reference/utl_file.html http://docs.oracle.com

    1.9K10

    Oracle中rownum的基本用法

    对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。...(1) rownum 对于等于某值的查询条件 如果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生表中第二条学生的信息,使用rownum=2结果查不到数据。...注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。...中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。..." 但却发现oracle却不能按自己的意愿来执行,而是先随便取20条记录,然后再order by,后经咨询oracle,说rownum确实就这样,想用的话,只能用子查询来实现先排序,后rownum,方法如下

    8.4K30

    oracle 中关于null的操作

    空值     空值一般用NULL表示     一般表示未知的、不确定的值,也不是空格     一般运算符与其进行运算时,都会为空     空不与任何值相等     表示某个列为空用:IS NULL  不能使用...:     NVL 函数        格式:NVL(表达式1,表达式2)        作用:测试表达式的值,如果表达式1为空,则返回表达式2的值;不为空,返回表达式1的值。     ...NVL2   函数        格式:NVL2(表达式1,表达式2,表达式3)        作用:测试表达式的值,表达式1不为空,返回表达式2的值,如果为空,则返回表达式3的值。     ...NULLIF  相等为空        格式:NULLIF (表达式1,表达式2)        作用:比较表达式1和表达式2的值,如果两个相等则返回为空,否则返回表达式1的值。     ...2、nvl2函数        格式:NVL2(表达式1,表达式2,表达式3)        作用:测试表达式的值,表达式1不为空,返回表达式2的值,如果表达式1不为空,则返回表达式3的值。

    1K80

    Oracle JDBC中的语句缓存

    在Oracle数据库中,SQL解析有几种: 硬解析:过多的硬解析在系统中产生shared pool latch和library cache liatch争用,消耗过多的shared pool,使得系统不具有可伸缩性...软软解析:其实这也也属于软解析,与普通的软解析不同的是,软软解析的SQL会在会话的cached cursor中命中。 一次解析,多次执行:这是解析次数最少的方式,也是系统最具有可扩展性的方式。...那么在JAVA开发的应用中,怎么样才能实现上述第4种方式? 如果是循环处理某种数据,这个比较容易实现。其实对于不是这种情况,Oracle也提供了很好的方式来实现这一点。...那么,上述的方式无疑是比较简单的,但是这种方式有一个问题就是,缓存的利用效率可能不高,因为JAVA会将不常用的SQL语句也进行了缓存。Oracle的JDBC驱动也提供了一种手工控制的方式。...将测试代码中的第22行替换为: ((OracleConnection)conn).setExplicitCachingEnabled(true); 第40行替换为: pstmt = ((OracleConnection

    2K80
    领券