Oracle PL/SQL基础语法学习17:Error-Reporting Functions(错误报告函数)

系列文章目录

Oracle PL/SQL基础语法学习12:短路求值
Oracle PL/SQL基础语法学习13:比较运算符
Oracle PL/SQL基础语法学习14:BOOLEAN表达式
Oracle PL/SQL基础语法学习15:静态表达式
Oracle PL/SQL基础语法学习16:CASE Expression(CASE表达式)


文章目录

  • 系列文章目录
  • 前言
  • Oracle PL/SQL基础语法学习17:Error-Reporting Functions(错误报告函数)
    • Error-Reporting Functions(错误报告函数)介绍
      • SQLERRM函数
      • SQLCODE函数
    • 官方文档Error-Reporting Functions(错误报告函数)代码例
      • Example 11-23 Displaying SQLCODE and SQLERRM Values
    • 总结
    • 参考

【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|SQL和数据库技术(ID:SQLplusDB)


前言

PL/SQL是Oracle数据库中的一种嵌入式语言,其功能强大,可以进行存储过程和函数的编写,帮助开发者快速高效地处理数据库操作。

最好的学习是实践加上看官方文档。官方文档中的代码例更是精华和重点所在。
IT行业如此,编程如此,Oracle PL/SQL的学习更是如此。

本系列将以《Database PL/SQL Language Reference》的PL/SQL代码例为主线进行介绍。

Oracle PL/SQL基础语法学习17:Error-Reporting Functions(错误报告函数)

Error-Reporting Functions(错误报告函数)介绍

Error-Reporting Functions(错误报告函数)是PL/SQL 中用来管理和报告错误的函数。这些函数提供了有用的反馈信息,有助于识别和解决PL/SQL查询时出现的各种问题,用于捕获和处理异常。
Oracle中最常见的错误报告函数是SQLCODE、SQLERRM。

SQLERRM函数

SQLERRM函数用于返回与错误代码相关联的错误信息,此函数是面向用户的,因为它返回了可读性更强的描述信息。

例:

SQL> set serverout on
SQL> BEGIN
  2    DBMS_OUTPUT.PUT_LINE('SQLERRM(-6511): ' || TO_CHAR(SQLERRM(-6511)));
  3  END;
  4  /
SQLERRM(-6511): ORA-06511: PL/SQL: 游标已经打开

PL/SQL 过程已成功完成。

上面代码使用 DBMS_OUTPUT.PUT_LINE 输出 SQLERRM(-6511) 函数的返回值。

可以获取最近一次SQL语句执行的状态码,状态码表示的是SQL语句执行的结果,若为0则表示SQL语句执行成功,否则会返回一个非0数字表示错误的类型。SQLCODE是一个只读变量,无法手动修改。

SQLCODE函数

可以获取最近一次SQL语句执行的状态码,状态码表示的是SQL语句执行的结果,若为0则表示SQL语句执行成功,否则会返回一个非0数字表示错误的类型。SQLCODE是一个只读变量,无法手动修改。
在Oracle中,对于内部定义的异常,其数字代码是相关联的Oracle 数据库的错误编号。除了错误“未找到数据”其数字代码为+100之外,此数字是负数。
对于用户定义的异常,其数字代码为+1(默认)或由EXCEPTION_INIT编译指示中指定的异常关联的错误代码。

官方文档Error-Reporting Functions(错误报告函数)代码例

Example 11-23 Displaying SQLCODE and SQLERRM Values

SQLCODE 和 SQLERRM 函数使用例:

SQL> DROP TABLE errors;

表已删除。

SQL> CREATE TABLE errors (
  2    code      NUMBER,
  3    message   VARCHAR2(64)
  4  );

表已创建。

SQL>
SQL> CREATE OR REPLACE PROCEDURE p AUTHID DEFINER AS
  2    name    EMPLOYEES.LAST_NAME%TYPE;
  3    v_code  NUMBER;
  4    v_errm  VARCHAR2(64);
  5  BEGIN
  6    SELECT last_name INTO name
  7    FROM EMPLOYEES
  8    WHERE EMPLOYEE_ID = -1;
  9  EXCEPTION
 10    WHEN OTHERS THEN
 11      v_code := SQLCODE;
 12      v_errm := SUBSTR(SQLERRM, 1, 64);
 13      DBMS_OUTPUT.PUT_LINE
 14        ('Error code ' || v_code || ': ' || v_errm);
 15
 16      /* Invoke another procedure,
 17         declared with PRAGMA AUTONOMOUS_TRANSACTION,
 18         to insert information about errors. */
 19
 20      INSERT INTO errors (code, message)
 21      VALUES (v_code, v_errm);
 22      commit;
 23      RAISE;
 24  END;
 25  /

过程已创建。

SQL> exec p;
BEGIN p; END;

*1 行出现错误:
ORA-01403: 未找到任何数据
ORA-06512: 在 "HR.P", line 23
ORA-06512: 在 "HR.P", line 6
ORA-06512: 在 line 1


SQL> select * from errors;

      CODE
----------
MESSAGE
--------------------------------------------------------------------------------
       100
ORA-01403: 未找到任何数据


SQL>

这段代码创建了一个用于记录错误信息的表errors和一个存储过程p。在存储过程中,使用SELECT语句查询不存在的员工ID,当发生异常时,获取异常代码和错误信息,并打印输出。同时,调用一个使用PRAGMA AUTONOMOUS_TRANSACTION声明的另一个存储过程来将错误信息插入到errors表中。最后使用RAISE语句重新抛出异常。

总结

错误报告函数函数提供了有用的反馈信息,从而可以更加灵活地识别错误并处理异常。合理使用错误报告函数可以大大提高数据操作的可靠性和安全性。

参考

2.8 Error-Reporting Functions

13.63 SQLERRM Function

13.62 SQLCODE Function

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/18612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【上进小菜猪】使用Ambari提高Hadoop集群管理和开发效率:提高大数据应用部署和管理效率的利器

📬📬我是上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货,欢迎关注。 介绍 Hadoop是一种开源的分布式处理框架,用于在一组低成本硬件的集群上存储和处理大规模数据集。Ambari是一种基…

【分布式搜索引擎03】

分布式搜索引擎03 11.9.数据聚合11.9.1.聚合的种类11.9.2.DSL实现聚合11.9.2.1.Bucket聚合语法11.9.2.2.聚合结果排序11.9.2.3.限定聚合范围11.9.2.4.Metric聚合语法11.9.2.5.小结 11.9.3.RestAPI实现聚合11.9.3.1.API语法11.9.3.2.业务需求11.9.3.3.业务实现 11.10.自动补全&a…

大学毕业设计使用python制作

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

JRebel插件热部署快速入门教程

文章目录 引入插件安装插件激活打开激活窗口激活插件 插件使用设置项目热更新热更新说明演示热更新 引入 Jrebel能够非常方便的帮助我们进行项目的热更新,尤其是前端也嵌在后端工程中的单体项目,热更新能减少一半的开发时间,这里我们演示一下…

TAPD使用规范

目录 https://www.bilibili.com/?spm_id_from333.788.0.0我该如何理解这段网址? ?spm_id_from333.788.0.0:表示查询字符串,用于向服务器传递额外的参数信息。在这个例子中,该查询字符串可能用于追踪网站访问来源或统计数据分析…

EndNote X9 导入知网文献 插入引用文献 方法

文章目录 1 EndNote X9 导入知网文献2 EndNote X9 插入参考文献常见问题总结3 EndNote X9 快速上手教程(毕业论文参考文献管理器) 1 EndNote X9 导入知网文献 下载知网参考文献引用: ①下载 引用; ②格式为 EndNote; 知…

JavaScript - 进阶+高级(笔记)

前言 给孩子点点关注吧!😭 本篇文章主要记录以下几部分: 进阶: 作用域;函数进阶(函数提升、函数参数、箭头函数);解构赋值;对象进阶(构造函数、实例成员、静…

freeRTOS中使用看门狗的一点思考

关于看门狗想必各位嵌入式软件开发的朋友应该都不会陌生的。在嵌入式软件开发中,看门狗常被用于监测cpu的程序是否正常在运行,如果cpu程序运行异常会由看门狗在达到设定的阈值时触发复位,从而让整个cpu复位重新开始运行。 看门狗的本质是一个…

【C++初阶】类和对象(下)

一.再谈构造函数 构造函数其实分为: 1.函数体赋值 2.初始化列表 之前所讲到的构造函数其实都是函数体赋值,那么本篇文章将会具体讲述初始化列表。 初始化列表 语法 以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"…

Kali Linux 操作系统安装详细步骤——基于 VMware 虚拟机

1. Kali 操作系统简介 Kali Linux 是一个基于 Debian 的 Linux 发行版,旨在进行高级渗透测试和安全审计。Kali Linux 包含数百种工具,适用于各种信息安全任务,如渗透测试,安全研究,计算机取证和逆向工程。Kali Linux 由…

【论文】SimCLS:一个简单的框架 摘要总结的对比学习(1)

SimCLS:摘要总结的对比学习(1) 写在最前面模型框架 摘要1 简介 写在最前面 SimCLS: A Simple Framework for Contrastive Learning of Abstractive Summarization(2021ACL会议) https://arxiv.org/abs/2106.01890 论文:https://…

GIT常用操作

GIT基本使用保姆级教程 1、本地安装GIT 1.1、安装 GIT安装包获取:https://git-scm.com/ 具体安装流程自行百度或自行摸索 1.2、配置信息 安装完成后运行git程序,大打开git bash界面,然后输入以下命令,设置全局用户名与全局邮…

软件设计师笔记--数据结构

文章目录 前言学习资料数据结构大 O 表示法时间复杂度线性结构和线性表线性表的顺序存储线性表的链式存储栈的顺序存储栈的链式存储队列的顺序存储与循环队列 串KMP 数组矩阵树二叉树二叉树的顺序存储结构二叉树的链式存储结构二叉树的遍历平衡二叉树二叉排序树最优二叉树(哈夫…

ZZS-7系列分闸、合闸、电源监视综合控制装置ZZS-7/1 ac220v

ZZS-7系列分闸、合闸、电源监视综合控制装置 系列型号: ZZS-7/1分闸、合闸、电源监视综合控制装置 ZZS-7/11分闸、合闸、电源监视综合控制装置 ZZS-7/12分闸、合闸、电源监视综合控制装置 ZZS-7/13分闸、合闸、电源监视综合控制装置 ZZS-7/14分闸、合闸、电源…

分享111个Java源码,总有一款适合您

分享111个Java源码,总有一款适合您 源码下载链接:https://pan.baidu.com/s/1fycjYHA7y6r-IH8H7v5XKA?pwdag8l 提取码:ag8l ​ Druid v1.2.15 OpenJDK Java开发环境 v21.5 Diboot轻代码开发平台 v2.8.0 blockj 基础区块链(联…

ANSYS APDL谐响应分析——悬臂梁的频响函数计算以及幅值、角度(相位)、分贝计算

问题描述 研究一根悬臂梁,材质为钢材。长度 L 2 L2 L2 米;截面为矩形,矩形的长度为 H 5 c m H 5cm H5cm,宽度为 B 2 c m B 2cm B2cm 。 建模思路: 先建立节点,然后用节点生成单元。使用n命令&…

《基于多尺度特征提取的少样本脉搏波形轮廓分类》阅读笔记

目录 一、论文摘要 二、论文十问 Q1:论文试图解决什么问题? Q2:这是否是一个新的问题? Q3:这篇文章要验证一个什么科学假设? Q4:有哪些相关研究?如何归类?谁是这一课…

索引—MySQL

文章目录 1.定义以及相关知识1.1定义1.2数据库保存数据的基本单位 2.MySQL中索引分类2.1B树和B树2.2主键索引(聚簇索引)2.3非聚簇索引2.4覆盖索引2.5复合索引(联合索引)2.6基于B树的索引2.7hash索引 1.定义以及相关知识 1.1定义 …

数据导向下制造业的生产效率、交易效率提升办法

在智能制造和工业4.0成为趋势的今天,大部分制造业企业,均已在企业内部通过实施PLM系统(Product Lifecycle Management,产品生命周期管理系统),实现了对组织内产品研发过程和产品研发数据的管理,…

基于Spring Boot的在线考试系统

系统分析 可行性分析 一个完整的系统,可行性分析是必须要有的,因为关系到系统生存问题,对开发的意义进行分析,能否通过本系统来补充线下在线考试管理模式中的缺限,去解决其中的不足等,通过对本系统&#…
最新文章