MariaDB 10.3发布已经有一段时间了,最近刚刚RC。里面提到了SQL_MODE新增了ORACLE选项,可以支持部分的PL/SQL语法,算是一个比较“新鲜”的更新,所以打算安装体验一下。
体验一下SQL_MODE=”ORACLE”
简单体验一下,我们在Google上找到Oracle 9i文档中PL/SQL示例:Sample 1. FOR Loop。
Oracle中的示例文档中代码:
-- available online in file 'sample1' DECLARE x NUMBER := 100; BEGIN FOR i IN 1..10 LOOP IF MOD(i,2) = 0 THEN -- i is even INSERT INTO temp VALUES (i, x, 'i is even'); ELSE INSERT INTO temp VALUES (i, x, 'i is odd'); END IF; x := x + 100; END LOOP; COMMIT; END;
首先,我们看看如果是这样一段代码,要在MySQL中运行,应该看起来是怎样的。下面是我修改的在MySQL5.7中运行的代码:
CREATE PROCEDURE dowhile() BEGIN DECLARE x INT DEFAULT 100; DECLARE i INT DEFAULT 1; WHILE i <= 10 DO IF MOD(i,2) = 0 THEN -- i is even INSERT INTO temp VALUES (i, x, 'i is even'); ELSE INSERT INTO temp VALUES (i, x, 'i is odd'); END IF; COMMIT; SET x=x+100; SET i=i+1; END WHILE; END;
以上两种,主要的不同包括:
我们先看看,前一段Oracle的代码,在MariaDB里面是否能够不做修改的运行:
这个简单的示例可以正常运行:
升级MariaDB 10.1到10.3
因为之前安装10.1版本,所以这次需要升级到最新的10.3。系统是Centos 7.4使用的yum管理,下面是大致的升级步骤。
先把yum仓库切换成10.3的仓库:
/etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
删除yum缓存信息:
yum clean metadata
删除原来的安装的MariaDB软件
rpm -e MariaDB-server rpm -e MariaDB-shared MariaDB-client MariaDB-common
安装新版本的MariaDB:
yum install mariadb-server yum install MariaDB-shared
启动并登录MariaDB:
sudo systemctl start mariadb systemctl status mariadb.service
最后
目前还没有量化评估MariaDB对PL/SQL的支持情况,但是,应该算是向Oracle放了一个“冷枪”。当然,对Oracle来说,这早就不是第一个支持Oracle语法的数据库了,并没什么大不了的。个人感觉,对于MariaDB来说,最重要应该还是拿下当前官方MySQL所占的份额,这才是最大的挑战。
Leave a Reply