暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

数据猿 2022-03-28
1976

 关键字:

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 迁移最佳实践》


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论