LightDB支持自定义异常

背景
在Oracle中支持用户 自定义异常,抛出自定义异常,处理自定义异常 来扩展业务自定义异常,丰富PLSQL行为。

LightDB在2024RP1版本里面,将支持PL/SQL自定义异常功能
支持范围匿名块,函数,存储过程

语法格式

DECLARE
exception_name EXCEPTION;
PRAGMA EXCEPTION_INIT(exception_name,error_code);
BEGIN
...
RAISE exception_name;
...
EXCEPTION WHEN exception_name THEN
...
END;
/
error_code取值范围为正100,大于-100000且不等于-1403的负数

匿名块中使用场景案例:

declare
    a exception;
    b exception;
    pragma exception_init(a,-20001);
    pragma exception_init(a,-20002);
begin
    raise a;
    exception
        when a then
        dbms_output.put_line('a sqlcode:' || sqlcode || ',sqlerrm:' || sqlerrm);
        when b then
        dbms_output.put_line('b sqlcode:' || sqlcode || ',sqlerrm:' || sqlerrm);
        when others then
        dbms_output.put_line('others sqlcode:' || sqlcode || ',sqlerrm:' || sqlerrm);
end;
/
--运行结果
a sqlcode:-20001,sqlerrm:ORA-20001:

函数中使用场景案例:

create or replace function func_custom_exception(id int) return integer as
    a exception;
    pragma exception_init(a,-20001);
begin
    if id = 1 then
        return id;
    end if;
    raise a;
    exception
        when a then
        dbms_output.put_line('a sqlcode:' || sqlcode || ',sqlerrm:' || sqlerrm);
        return sqlcode;
        when others then
        dbms_output.put_line('others sqlcode:' || sqlcode || ',sqlerrm:' || sqlerrm);
        return id;
end;
/
declare
    r integer;
begin
    r := func_custom_exception(1);
    dbms_output.put_line('r:' || r);

    r := func_custom_exception(2);
    dbms_output.put_line('r:' || r);
end;
/
--运行结果
r:1
a sqlcode:-20001,sqlerrm:ORA-20001:
r:-20001

存储过程中使用场景案例:

create or replace procedure proc_custom_exception(id int) as
    a exception;
    pragma exception_init(a,-20001);
begin
    if id = 1 then
        dbms_output.put_line('id:' || id);
        return;
    end if;
    raise a;
    exception
        when a then
        dbms_output.put_line('a sqlcode:' || sqlcode || ',sqlerrm:' || sqlerrm);
        when others then
        dbms_output.put_line('others sqlcode:' || sqlcode || ',sqlerrm:' || sqlerrm);
end;
/
begin
    proc_custom_exception(1);
    proc_custom_exception(2);
end;
/
--运行结果
id:1
a sqlcode:-20001,sqlerrm:ORA-20001:

以上功能,将在2024RP1的LightDB版本与大家见面!

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
离线安装ora2pg的步骤如下: 1. 首先,您需要下载ora2pg的软件包。您可以从GitHub的ora2pg发布页面下载软件包。 2. 将下载的软件包解压缩。使用以下命令:tar -xzvf ora2pg-21.0.tar.gz 3. 进入解压后的目录。使用以下命令:cd ora2pg-21.0 4. 确保您已经安装了perl,并且版本在5.8以上。 5. 安装ora2pg的依赖模块。您可以使用以下命令来安装Compress::Zlib模块:perl -MCPAN -e 'install Compress::Zlib' 6. 修改ora2pg.conf文件,该文件位于/home/lightdb/config目录下。根据您的需要修改导出数据库的信息和需要导出的对象,如表、视图、序列等。 7. 执行编译和安装命令。使用以下命令:perl Makefile.PL -l && make && make install 8. 您可以使用以下命令来验证ora2pg是否安装成功:ora2pg --help 请注意,上述步骤是基于离线安装ora2pg的前提下。如果您的服务器没有互联网连接,您需要事先准备好所需的软件包和依赖模块。提供了一个离线安装ora2pg的下载链接,并提取码为1qaz。您可以将软件包和依赖模块文件下载到服务器上,并按照上述步骤进行安装。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ora2pg安装和使用](https://blog.csdn.net/enzesheng/article/details/112478016)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [关于docker离线包安装,ora2pg镜像导入,以及数据迁移](https://blog.csdn.net/weixin_44031114/article/details/129948848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值