【LightDB】Oracle存储过程兼容-匿名块兼容

【LightDB】Oracle存储过程兼容-匿名块兼容

Oracle匿名块语法如下:

DECLARE声明部分,定义变量、数据类型、异常、局部子程序等
BEGIN执行部分,实现块的功能
EXCEPTION异常处理部分,处理程序执行过程中产生的异常
END;

简单的Oracle匿名块例子如下:

DECLARE 
	 a int := 100;
BEGIN
	DBMS_OUTPUT.PUT_LINE('a='||a);
END;

目前PG版本并不支持这种写法,PG的匿名块是用DO语句实现的,例子如下:

DO $$
DECLARE 
	 a int := 100;
BEGIN
	raise info 'a=%', a;
END $$;

由上面例子可以看出,DO语句后面是由$$符号包起来的字符串,所以要兼容Oracle匿名块,要做出以下支持:

  1. 去掉DO,换句话说匿名块可以不用DO开头。
  2. 去掉$$符号,匿名块可以直接调用匿名块体。
  3. 要支持’declare’开头的和’begin’开头的匿名块。
  4. ltsql下匿名块要以’/'结尾。

目前LightDB 22.2版本已经支持的Oracle匿名块,示例如下:

lightdb@postgres=# DECLARE 
lightdb@postgres$# a int := 100;
lightdb@postgres$# BEGIN
lightdb@postgres$# DBMS_OUTPUT.PUT_LINE('a='||a);
lightdb@postgres$# END;
lightdb@postgres$# /
a=100
DO
lightdb@postgres=#
lightdb@postgres=# BEGIN
DBMS_OUTPUT.PUT_LINE('a=100');
END;
/
a=100
DO

其中’DBMS_OUTPUT.PUT_LINE’函数由插件orafce实现,LightDB原生集成了插件orafce。

详细语法可参考LightDB官网查看https://www.hs.net/lightdb
更多请登录LightDB官网进行查看:https://www.hs.net/lightdb

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追魂曲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值