金仓数据库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、NULL和EXECUTE 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 迁移最佳实践》
金仓数据库KingbaseES 迁移工具—PL/SQL中Oracle和KingbaseES 的对比相关推荐
- pl/sql中三种游标循环效率对比
pl/sql中三种游标循环效率对比 - Oracle数据库栏目 - 红黑联盟 http://www.2cto.com/database/201307/224636.html 转载于:https://b ...
- 金仓数据库 KDTS 迁移工具使用指南(3. 系统部署)
3. 系统部署 3.1. 准备工作 迁移程序从源数据库读取数据后写入目标数据库,因此需要一定量的内存作为中转缓存(并行度越高.表中单行数据越大(特别是大对象(LOB,Large Object)字段,如 ...
- 金仓数据库 KingbaseES PL/SQL 过程语言参考手册(12. 异常处理)
12. 异常处理 本章解释如何处理 PL/SQL 运行时错误,即异常处理. 另请参阅 " 触发器中的异常处理 " "FORALL 语句完成后处理 FORALL 异常 &q ...
- 在一台数据库服务器上创建多个金仓数据库
同一金仓数据库服务器上可以创建多个不同的数据库,不同的数据库端口号相同(54321),仅使用不同的名称进行区分,下面说明在已有数据库的服务器上创建数据库的方法,如下(推荐使用脚本方式): 1.在安装了 ...
- 金仓数据库KingbaseES数据库开发指南(4. 面向应用程序的PL/SQL开发)
目录 4.1. PL/SQL子程序和包的编写 ¶ 4.1.1. PL/SQL 子程序概述 ¶ 4.1.2. PL/SQL 包概述 ¶ 4.1.3. PL/SQL 单元概述 ¶ 4.1.4. 创建 PL ...
- 金仓数据库 KingbaseES PL/SQL 过程语言参考手册(19. D PL/SQL保留字和关键字)
19. D PL/SQL保留字和关键字 保留字和关键字是在 PL/SQL 中具有特殊含义的标识符.它们不区分大小写.有关它们的更多信息,请参阅"保留字词和关键字". 表 19.1 ...
- 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数
关键字 pg_get_function_arg_default,regproc 问题描述 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数获取函数或 ...
- 金仓数据库 KingbaseES SQL 语言参考手册 (11. SQL语句:ABORT 到 ALTER INDEX)
11. SQL语句:ABORT 到 ALTER INDEX 本章描述各种类型的SQL语句,由于类型较多,将按字母顺序排列分组.这是第一组SQL语句. 包含以下章节: SQL语句类型 SQL语句各章节是 ...
- 如何在金仓数据库KingbaseES中指定IP登录
关键字 KingbaseES,指定IP 问题描述 如何在金仓数据库KingbaseES中指定IP登录? 解决方案 1. 修改data目录下sys_hba.conf文件 2. 进行IP修改,重启服务,在 ...
最新文章
- Windows XP Service Pack 3 RC2 简体中文版发布
- MySQL学习笔记(5)之数据定义类型
- [NOIP2006] 金明的预算方案
- innovation
- 首次摆脱对梯度的依赖,CMU等开源Score-CAM:基于置信分数的视觉可解释性
- 设计模式-行为型模式-中介者模式
- memcmp()库函数实现
- python tkinter treeview 高亮_满满的成就感~如何用python让你的想法拥有可操作性?(一)...
- VMware 和 linux镜像文件
- ubuntu修改ip地址
- Spark学习资料汇总
- 基于一阶倒立摆系统的模糊神经网络PID控制
- DNS 隧道通信特征与检测
- 封装:el-upload上传图片组件(解决图片闪动、多选问题)
- 武汉理工大学c语言pta选择题答案,武汉理工大学c语言实验及答案.doc
- 数据库种类发展史和大数据下的数据库(NoSQL)
- 服务器开发macbook综述
- 十三个大数据学习网站
- Arduino IDE下的stm32环境搭建、OLED液晶显示(U8g2lib库)、NUCLEO-F411测试、STM32F103C8T6在Arduino下的液晶显示、
- App开发中利用Mob实现免费短信验证码
热门文章
- 第七十一章 SQL命令 SELECT(三)
- Matlab:设置figure中英文不同字体
- Elasticsearch工作原理
- Juniper防火墙 二层透明模式配置
- 学习无霍尔传感器的BLDC方波调速
- 10Wqps 超高并发 API网关 架构演进之路
- 马斯克给隧道加上了“蜂窝”、“蝙蝠侠”和“跟踪轮”,只要1美元...
- 团体程序设计天梯赛 https://www.patest.cn/contests/gplt
- 计算机网络总结(大全)
- 用U盘在Mac OS X中安装Windows7系统