金仓数据库KingbaseES 迁移工具—PL/SQL中Oracle和KingbaseES 的对比

关键字:

KingbaseES、PL/SQL、存储过程、函数

一、PL/SQL语言兼容特性

在 PL/SQL 语言方面,KingbaseES 提供了大量的Oracle 兼容特性。这些特性使得大多数的 Oracle 数据库对象和 SQL 语句移植到 KingbaseES 中无需任何转换。

本文主要介绍 KingbaseES 原生支持的 Oracle 兼容特性,并提供了必要的示例说明。

二、PL/SQL语言兼容案例

2.1 记录类型

为降低 Oracle 移植难度,KingbaseES 在自身的 SQL 数据类型基础上扩展了NUMBER 类型、VARCHAR2 类型、CHAR(n CHAR|BYTE) 类型和兼容 Oracle 的DATE 类型。不仅如此,在 PL/SQL 中,KingbaseES 还预定义了%TYPE 属性、%ROWTYPE 属性和RECORD 类型。

如下图2-1和2-2 ,KingbaseES和Oracle plsql语法的对比。

执行存储过程:

图2-1 KingbaseES record类型

执行存储过程:

 图2-2 Oracle record类型

2.2 集合类型

KingbaseES支持大多数常用的 Oracle PL/SQL 集合类型( COLLECTION 类型 )。在 KingbaseES 中,它们被称为抽象数据类型。

KingbaseES的抽象数据类型有三种:关联数组(Associative Array )、嵌套表(Nested Table )和可变数组(Varray )。它们均为基于键-值对的集合类型。在 Oracle 兼容模式中,KingbaseES 用户可使用这些类型获取或修改集合信息。

如下图2-3和2-4 ,KingbaseES和Oracle plsql语法的对比。

执行存储过程:

图2-3 KingbaseES集合类型

执行存储过程:

图2-4 Oracle集合类型

2.3 基本过程语句

在PL/SQL应用程序中,基本过程语句包括赋值语句和多种SQL语句。这些SQL语句如INSERT、UPDATE、DELETE、SELECT INTO、NULLEXECUTE IMMEDIATE等。

下面,分别介绍在这些语句上KingbaseES的Oracle兼容情况。

如下图2-5和2-6 ,KingbaseES和Oracle plsql语法的对比。

执行存储过程:

图2-5 KingbaseES基本结构

执行存储过程:

图2-6 Oracle基本结构

2.4 控制流语句

控制流语句是PL/SQL编程中的核心部件。用户使用它们可控制SQL或PL/SQL语句的执行逻辑。

2.4.1 IF语句

用户可通过IF语句条件控制SQL语句的执行逻辑。KingbaseES提供了以下四种方式的IF语句:

  • IF ... THEN
  • IF ... THEN ... ELSE
  • IF ... THEN ... ELSEIF
  • IF ... THEN ... ELSEIF ... THEN ... ELSE

在上述语句上,KingbaseES和Oracle兼容。如下图2-7和2-8 ,KingbaseES和Oracle plsql语法的对比。

执行存储过程:

图2-7 KingbaseE控制结构

执行存储过程:

图2-8 Oracle控制结构

2.4.2 循环语句

在存储过程、函数和匿名块中,可利用循环语句重复执行语句序列。在循环语句上,KingbaseES支持三种类型,即简单LOOP语句、WHILE-LOOP语句和*FOR-LOOP*语句。在这三种类型上,KingbaseES均对Oracle提供了兼容性支持。如下图2-9和2-10 ,KingbaseES和Oracle plsql语法的对比。

图2-9 KingbaseES循环结构

图2-10 Oracle循环结构

2.5 PL/SQL 异常处理

所谓异常处理是指一段用于捕获和处理运行时错误,并被单独封装的 SQL 程序代码。KingbaseES 从语法上支持 Oracle 的大部分系统预定义异常处理功能。此外,KingbaseES 的异常处理方式和 Oracle 也相同,即异常发生后,系统将立即捕获和处理异常。KingaseES的异常处理语法如下所示:

如下图2-11和2-12 ,KingbaseES和Oracle plsql语法的对比。

图2-11 KingbaseES异常处理

图2-12 Oracle异常处理

三、总结

   KingbaseES在PL/SQL语法上和Oracle有很多兼容的方面,对Oracle的存储过程平滑迁移到KingbaseES奠定了一个良好的基础。本次文档通过案例做了一些对比,更多的PL/SQL语法兼容性对比,请参考官方文档。

参考文档:

《 Oracle 至 KingbaseES V8R6 迁移最佳实践》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值