作者:杨涛涛
资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
今天遇到一个 OceanBase 数据库下 Oracle 租户的 PLSQL 分隔符问题,特来分享下。
我的初衷是对 Oracle 租户下的一张表造点随机数据,写好了 INSERT 语句,却提示没有函数 dbms_random.value 。于是查阅 OceanBase 官方文档,发现需要导入系统包 dbms_random !dbms_random 系统包存放在 OceanBase 安装目录下的 admin 子目录里,包含两个 SQL 文件,一个是包的声明 SQL:dbms_random.sql;另一个是包的定义 SQL:dbms_random_body.sql 。
我在 obclient 下导入这两个 SQL 文件,直接报语法错误。官方给的 SQL 文件怎么可能有语法错误呢?估计是我没有完全按照文档来规范操作而导致的问题。
最终我把报错的地方提取出来,整理成如下简单函数:
create or replace function tt return number is
v1 number;
v2 number;
begin
v1 := 10;
v2 := sqrt(-2 * ln(v1)/v1);
return v2;
end;
/
直接执行这个函数,也是报同样的错误。
<mysql:5.6.25:SYS> create or replace function tt return number is
-> v1 number;
-> v2 number;
-> begin
-> v1 :=

文章讲述了作者在OceanBase数据库中遇到的Oracle租户PLSQL分隔符问题,由于默认分隔符与除法运算符冲突导致SQL语法错误。通过改变默认分隔符,成功解决了问题。
最低0.47元/天 解锁文章
11万+

被折叠的 条评论
为什么被折叠?



