关键字:

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

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

  1. pl/sql中三种游标循环效率对比

    pl/sql中三种游标循环效率对比 - Oracle数据库栏目 - 红黑联盟 http://www.2cto.com/database/201307/224636.html 转载于:https://b ...

  2. 金仓数据库 KDTS 迁移工具使用指南(3. 系统部署)

    3. 系统部署 3.1. 准备工作 迁移程序从源数据库读取数据后写入目标数据库,因此需要一定量的内存作为中转缓存(并行度越高.表中单行数据越大(特别是大对象(LOB,Large Object)字段,如 ...

  3. 金仓数据库 KingbaseES PL/SQL 过程语言参考手册(12. 异常处理)

    12. 异常处理 本章解释如何处理 PL/SQL 运行时错误,即异常处理. 另请参阅 " 触发器中的异常处理 " "FORALL 语句完成后处理 FORALL 异常 &q ...

  4. 在一台数据库服务器上创建多个金仓数据库

    同一金仓数据库服务器上可以创建多个不同的数据库,不同的数据库端口号相同(54321),仅使用不同的名称进行区分,下面说明在已有数据库的服务器上创建数据库的方法,如下(推荐使用脚本方式): 1.在安装了 ...

  5. 金仓数据库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 ...

  6. 金仓数据库 KingbaseES PL/SQL 过程语言参考手册(19. D PL/SQL保留字和关键字)

    19. D PL/SQL保留字和关键字 保留字和关键字是在 PL/SQL 中具有特殊含义的标识符.它们不区分大小写.有关它们的更多信息,请参阅"保留字词和关键字". 表 19.1  ...

  7. 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数

    关键字 pg_get_function_arg_default,regproc 问题描述 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数获取函数或 ...

  8. 金仓数据库 KingbaseES SQL 语言参考手册 (11. SQL语句:ABORT 到 ALTER INDEX)

    11. SQL语句:ABORT 到 ALTER INDEX 本章描述各种类型的SQL语句,由于类型较多,将按字母顺序排列分组.这是第一组SQL语句. 包含以下章节: SQL语句类型 SQL语句各章节是 ...

  9. 如何在金仓数据库KingbaseES中指定IP登录

    关键字 KingbaseES,指定IP 问题描述 如何在金仓数据库KingbaseES中指定IP登录? 解决方案 1. 修改data目录下sys_hba.conf文件 2. 进行IP修改,重启服务,在 ...

最新文章

  1. Windows XP Service Pack 3 RC2 简体中文版发布
  2. MySQL学习笔记(5)之数据定义类型
  3. [NOIP2006] 金明的预算方案
  4. innovation
  5. 首次摆脱对梯度的依赖,CMU等开源Score-CAM:基于置信分数的视觉可解释性
  6. 设计模式-行为型模式-中介者模式
  7. memcmp()库函数实现
  8. python tkinter treeview 高亮_满满的成就感~如何用python让你的想法拥有可操作性?(一)...
  9. VMware 和 linux镜像文件
  10. ubuntu修改ip地址
  11. Spark学习资料汇总
  12. 基于一阶倒立摆系统的模糊神经网络PID控制
  13. DNS 隧道通信特征与检测
  14. 封装:el-upload上传图片组件(解决图片闪动、多选问题)
  15. 武汉理工大学c语言pta选择题答案,武汉理工大学c语言实验及答案.doc
  16. 数据库种类发展史和大数据下的数据库(NoSQL)
  17. 服务器开发macbook综述
  18. 十三个大数据学习网站
  19. Arduino IDE下的stm32环境搭建、OLED液晶显示(U8g2lib库)、NUCLEO-F411测试、STM32F103C8T6在Arduino下的液晶显示、
  20. App开发中利用Mob实现免费短信验证码

热门文章

  1. 第七十一章 SQL命令 SELECT(三)
  2. Matlab:设置figure中英文不同字体
  3. Elasticsearch工作原理
  4. Juniper防火墙 二层透明模式配置
  5. 学习无霍尔传感器的BLDC方波调速
  6. 10Wqps 超高并发 API网关 架构演进之路
  7. 马斯克给隧道加上了“蜂窝”、“蝙蝠侠”和“跟踪轮”,只要1美元...
  8. 团体程序设计天梯赛 https://www.patest.cn/contests/gplt
  9. 计算机网络总结(大全)
  10. 用U盘在Mac OS X中安装Windows7系统