技术开发 频道

达梦数据库7.0版新特性之PL_SQL介绍

  【IT168 技术】在前几篇文章中,我们为大家介绍了达梦7.0数据库的几个新特性:水平分区、动态性能监视和批量处理技术。本篇文章我们将为大家介绍达梦7.0之PL/SQL。

  相关文章:

  • 达梦7.0新版本即将发布 新特性抢先看
  • 达梦数据库7.0版新特性之动态性能监视
  • 达梦数据库7.0版新特性之批量处理技术

  1. PL/SQL概述

  PL/SQL是达梦数据库对标准SQL语言的扩展,达梦数据库公司已经将PL/SQL整合到达梦数据库服务器中,PL/SQL是达梦数据库的过程化语言,包括一整套的数据类型、条件结构、循环结构和异常处理结构,PL/SQL可以执行SQL语句,SQL语句中也可以使用PL/SQL函数。

  在DM7中,对PL/SQL功能做了很大的改进,同时加入了很多新的功能,使得PL/SQL的使用、执行都有很大的改善,主要体现在下面四个方面:

  (1)PL/SQL增加了对DM7中新增的类类型的支持。

  (2)从DM7开始,PL/SQL支持全部C语言语法,这样在对自定义的PL/SQL语法不熟悉的情况下也可以对数据库进行各种操作,这样可以使对数据库的操作更加灵活,也更加容易,这是在各数据库系统中很少有的。

  (3)DM7也支持PL/SQL语句块的执行计划重用的功能,这样可以避开对大量语句的重复分析,从而可以很有效的提高系统的执行效率。

  (4)DM7中对SQL的执行是类似JAVA虚拟机的模式,这种运行机制可以有效提升PL/SQL的执行效率。

  2. C语法的PL/SQL

  在我们印象中,PL/SQL是很复杂的,因为它有自己的语法规则,并且通常都不会去记那么多并且复杂的语法,只是在用的时候查看程序员手册,所以写一个可以执行并且正确的PL/SQL语句是比较困难的。

  在达梦数据库中,第一次实现了用C语言语法作为PL/SQL的一个可选语法,这就为那些了解C语言的人提供了很大的方便性,而无需去查看程序员手册就可以很自如的完成一个语句块,这对SQL程序员而言,这个功能无疑是他们梦寐以求的。

  在C语法PL/SQL的应用方面,定义一个语句块不需要用BEGIN及END把语句包含起来,而是直接用大括号括住即可。下面举一个C语法的PL/SQL的例子来更具体的说明。

{
    string    
str=' Hello World';
    
int        count = 0;
    
for(count = 0; count < 10; count++)
    {
        
if(power(count, 2) % 2 == 0)
            
print concat(power(count, 2), str);
    }
}
输出:
0 Hello World
4 Hello World
16 Hello World
36 Hello World
64 Hello World
0 rows affected
time used:
42.978(ms) clock tick:111735871.

   从上面例子可以看出,用C语法的PL/SQL时,程序可以变得非常简单易懂,可以很自由的调用一些系统内部函数(如上面例子中的concat()、power())、存储函数、过程等等。可以定义象C#中的一些数据类型,如上面例子所示STRING类型,还可以定义C语言中的基本数据类型,如上面例子中的int,另外还支持全部的SQL类型,达梦数据库内部定义的类类型、数组类型、游标类型等。

  3. PL/SQL的执行原理

  DM7的SQL语句执行是仿照JAVA虚拟机(VM)模式实现的。这种运行机制可以有效提升PL/SQL的执行效率。

  方法(METHOD):执行计划的实际执行体称为方法。方法中包含3个主要元素:变量、指令以及操作符。

  变量(VARIABLE):方法的变量分为参数、局部变量以及返回值。无论哪种变量,都通过VM的堆栈进行读写访问。不同类型的变量,占用堆栈的字空间也是不同的。除了变长的串类型,每个类型变量对应的字空间都是确定的。但不论哪种类型的变量,其在VM堆栈中都是字对其存放的。VM堆栈的字宽度也是可变的。在32位系统下,一个字长为4字节,而64为系统下,则为8字节。

  指令(DIRECTIVE):DM7执行器借助指令进行变量读写、各类运算、跳转循环以及异常处理。DM7执行器提供了100多个指令,每个指令仅执行最基本的操作,如LOAD、STOR、JMP等。但将不同的指令组合起来,就可以实现任意复杂的处理逻辑。指令是流式组织并顺序执行的(除了特殊的跳转指令)。每个方法都包含一个指令流来完成主体执行流程。在涉及计算的SQL操作符中,也包含各自的指令流。

  操作符(OPERATOR):DM7执行器的SQL操作符简称操作符。操作符是SQL语句物理计划的组成元素,它们负责对表中数据进行访问和处理。每个单独的增、删、改或查询语句都对应有一棵由操作符构成的二叉树物理计划。

0
相关文章