lightdb plorasql存储过程支持SQLCODE和SQLERRM

文章目录

  • 背景
  • 用法
  • 总结

背景

LightDB PLOraSQL存储过程在执行异常时支持通过sqlcode和sqlerrm拿到错误码和错误信息,这点与Oracle是类似的。但是在Oracle中存储过程未执行异常也能获取到错误码和错误信息,而LightDB会找不到对应的变量。因此计划在24.2版本对该行为进行支持。

用法

在非异常块下的sqlcode和sqlerrm访问

BEGINDBMS_OUTPUT.PUT_LINE('sqlcode:' || sqlcode );DBMS_OUTPUT.PUT_LINE('sqlerrm:' || sqlerrm );
END;
/sqlcode:0
sqlerrm:ORA-0000
DO

在非异常块下sqlcode和sqlerrm访问

DECLAREerrcode1 int;errcode2 int;errcode3 int;errcode4 int;errmsg1  varchar(255);errmsg2  varchar(255);errmsg3  varchar(255);errmsg4  varchar(255);
BEGIN	DECLAREv_exception1 EXCEPTION;v_exception2 EXCEPTION;PRAGMA EXCEPTION_INIT(v_exception1,-20666);PRAGMA EXCEPTION_INIT(v_exception2,-30666);BEGINRAISE v_exception1;EXCEPTIONWHEN v_exception1 thenBEGINerrcode3 := SQLCODE;errmsg3 := substr(SQLERRM, 1, 255);RAISE v_exception2;						EXCEPTIONWHEN v_exception2 thenerrcode4 := SQLCODE;errmsg4 := substr(SQLERRM, 1, 255);END;			errcode2 := SQLCODE;	errmsg2 := substr(SQLERRM, 1, 255);END;errcode1 := SQLCODE;errmsg1 := substr(SQLERRM, 1, 255);DBMS_OUTPUT.PUT_LINE('errcode1 = ' || errcode1 || ' ' || 'errmsg1 = ' || errmsg1);DBMS_OUTPUT.PUT_LINE('errcode2 = ' || errcode2 || ' ' || 'errmsg2 = ' || errmsg2);DBMS_OUTPUT.PUT_LINE('errcode3 = ' || errcode3 || ' ' || 'errmsg3 = ' || errmsg3);DBMS_OUTPUT.PUT_LINE('errcode4 = ' || errcode4 || ' ' || 'errmsg4 = ' || errmsg4);
END;
/errcode1 = 0 errmsg1 = ORA-0000
errcode2 = -20666 errmsg2 = ORA-20666:
errcode3 = -20666 errmsg3 = ORA-20666:
errcode4 = -30666 errmsg4 = ORA-30666:
DO

总结

异常块内获取的sqlcode和sqlerrm的值为抛出异常对应的错误码和错误信息,非异常块内sqlcode是0,sqlerrm是ORA-0000

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试学习二

瓶颈的精准判断 TPS曲线 tps图 响应时间图 拐点在哪里呢? 这是一个阶梯式增加的场景,拐点在第二个压力阶梯上就出现了,因为响应时间增加了,tps增加的却不多,在第三个阶段时,tps增加的就更少了,响应时间也在不断增加,所以性能瓶颈在加剧,越往后越明显【tps的增长,…

Windows下编译RTTR

虽然C11引入了RTTI、Metaprogramming 等技术,但C在Reflection编程方面依旧功能有限。在社区上,RTTR则提供了一套C编写的反射库,补充了C在Reflection方面的缺陷。 零、环境 操作系统Windows 11Visual StudioVisual Studio Community 2022 CMa…

C++ STL概念之 迭代器

什么是迭代器 迭代器(Iterator)是一个在容器中访问元素的对象,提供了一种方法来顺序访问容器中的元素,而无需暴露容器的底层表示。 或者说 行为像指针一样的类型。可能是指针也可能是被类封装的指针,不关注容器底层细…

搭建内网穿透服务(frp)

搭建内网穿透服务(frp) 一、为什么 在平时工作当中,我们经常会遇到需要将自己本地的服务暴露在公网上,方便与他人进行接口对接、或者进行演示等等,虽然有一些免费的内网穿透服务,但是大都很不稳定或者带宽太低&#x…

让调用者自己干活的特殊线程池

让调用者自己干活的特殊线程池 1. 相关背景 单元测试时, 我们的某些业务代码可能是在线程池中运行的,可能会出现各种不一致的情况。 这时候可以hack一下, 创建一个调用者直接执行的线程池,避免干扰; 2. 实现代码 import java.util.concurrent.*;// 让…

【永洪BI】资源导出

路径:管理系统>资源部署>资源导出 1.页面介绍 选择左侧面板中的管理系统,点击资源部署,选择资源导出,进入资源导出页面。 【名称】导出的 jar 文件的名称,必填项。 【描述】导出的 jar 文件中包含的描述信息…

Gateway基本配置的参数以及yml示例

Spring Cloud Gateway作为API网关,可以通过配置文件来定义路由规则、过滤器和相关参数。 参入如下: routes: 定义了一组路由规则,每个路由规则包含了路由的ID、目标URI、断言集合和过滤器集合。 id: 路由的唯一标识符,用于区分不同…

华为昇腾310B1平台视频解码失败[ERROR] Send frame to vdec failed, errorno:507018

目录 1 [ERROR] Send frame to vdec failed, errorno:507018 2 bug解决尝试1 3 bug解决尝试2 4 最终解决方法 参考文献: 1 [ERROR] Send frame to vdec failed, errorno:507018 某项目中的代码运行报错 [ERROR] Send frame to vdec failed, errorno:507018 Ac…

Linux系统 -目录结构与配网

目录的特点 Windows中有C盘、D盘等,每个都是一个根系统是个多根系统 Linux中只有一个根是个单根系统 Linux-目录存储的内容 1、/root:管理员的家目录 2、/home:存储普通用户家目录的目录/3、/tmp:临时目录,这个目录存储…

linux系统管理面试题

用户管理: 1. 如何在Linux中创建一个新用户并设置密码? 在Linux中创建一个新用户并设置密码,可以使用以下步骤: 打开终端或命令行界面。使用root权限登录或使用sudo命令获取管理员权限。运行以下命令来创建新用户(将…

了解 Robot Framework :接口自动化测试教程!

开源自动化测试利器:Robot Framework Robot Framework 是一个用于实现自动化测试和机器人流程自动化(RPA)的开放源代码框架。它由一个名为 Robot Framework Foundation 的组织得到推广,得到了多家领军企业在软件开发中的广泛应用。…

运营商三要素核验接口如何对接

运营商三要素核验接口又叫运营商手机号三要素验证接口、运营商手机号实名认证接口、运营商手机号三要素核验接口,指的是输入姓名、身份证号码及手机号,通过运营商数据库实时校验此三项是否匹配。那么运营商三要素核验接口如何对接呢? 首先我…

Java SE入门及基础(51) Queue 接口 比较器接口

目录 Queue 接口 1. 特性描述 Queue 接口常用方法 2. LinkedBlockingQueue 用法示例 3. PriorityQueue 用法示例 思考:如果 PriorityQueue 队列中存储的是对象,会怎么排序? 比较器接口 1. 比较器接口的作用 2. Comparable 接口 示…

【设计模式】JAVA Design Patterns——Abstract Factory(抽象工厂模式)

🔍目的 提供一个用于创建相关对象家族的接口,而无需指定其具体类 🔍解释 真实世界例子 要创建一个王国,我们需要具有共同主题的对象。精灵王国需要精灵国王、精灵城堡和精灵军队,而兽人王国需要兽人国王、兽人城堡和兽…

项目路由分模块A模块B模块C......模块N使用

路由分模块原因: vue框架中会有router文件,但是路由文件下只有一个路由文件,在实际项目开发中会有多人负责多模块的情况,若都在一个文件内编辑路由名称,就相当于是机房里的数据线,会很乱七八糟,…

1. go语言初识(一)

本篇博客涉及到的内容:变量和常量、iota常量生成器、类型转换 变量(Variables)和常量(Constants) 变量(Variables) 1. 定义变量 在Go中,可以使用’var‘关键字来声明一个变量&…

【十大排序算法】----选择排序(详细图解分析+实现,小白一看就会)

目录 一:选择排序——原理 二:选择排序——分析 三:选择排序——实现 四:选择排序——优化 五:选择排序——效率 一:选择排序——原理 选择排序的原理:通过遍历数组,选出该数组…

使用Docker配置深度学习环境——以diffusers为例

Docker的其他信息可以在我的网站上找到,这里假设安装完成了,直接上手。 git clone 仓库地址打开docker目录,找到目标版本: sudo docker build diffusers-pytorch-cuda如果失败,尝试使用换源: sudo nano …

GPT-4o 炸裂发布!你竟然还没用上?(附详细教程)

今天AI界的爆炸新闻非chatgpt-4o莫属,从早上到现在随处可见的文章推送,视频推送。 大家或多或少都有耳闻了,今天主要讲一讲我们普通人到底怎么用?如果不氪金行不行?我就想体验一下可不可以?带着问题往下看 …

提升写作效率的秘密武器:一个资深编辑的AI写作体验

有句话说:“写作是一项你坐在打字机前流血的工作。”而如今,各类生成式软件的涌现似乎打破了写作这一古老的艺术形式壁垒。过去,作家们独自在书桌前冥思苦想,如今,一款名为“玲珑AI工具”的ai写作助手正悄然改变着文案写作行业的创作生态,成为提升写作效率的秘密武器。 在传统…