Altibase架构
内存管理
日志和恢复
事务处理
并发用户支持
查询处理
编程接口
复制
工具
应用领域
复杂查询性能
TPC-H查询
Cache优化
LDAP支持
GIS支持
存储过程
本地存储过程
选择性加载
元组查询执行
内建函数
MVCC
       
       
   

存储过程

概述


      存储过程是由一系列SQL语句和控制语句组成的模块,可以重复调用。Altibase的存储过程叫做Altibase/PSM(Persistent Stored Module)。

      Altibase/PSM由存储过程和存储函数组成。存储过程没有返回值,但可以通过输入的参数返回数据。因为存储过程没有返回值,所以存储过程不能在SQL语句中作为操作数使用。然而,有返回值的存储函数可以作为操作数。

      由于Altibase/PSM是模块化的,存储在服务器端,所以比简单的客户端-服务器程序速度快。此外,使用Altibase/PSM您可以非常简单的控制和维护业务逻辑。

Altibase PSM语言定义

PSM可以通过SQL定义。和PSM相关的SQL语法如下表所示:
        
类 别 语 法 说 明
  Create CREATE [OR REPLACE] PROCEDURE | FUNCTION     创建新存储过程或存储函数
  Modify ALTER PROCEDURE | FUNCTION     改变定义,根据新的定义重建执行计划,所以执行计划是最优化的
  Drop DROP PROCEDURE | FUNCTION     丢弃所有存储过程或存储函数
  Execute EXECUTE proc     执行存储过程或存储函数,存储函数可以作为内建函数

PSM块

PSM提供控制流语句,也可以使用变量。下面是PSM中一个语法块的简单说明。

[声明]
在声明块(在DECLARE和BEGIN之间)中声明局部变量,CURSOR和用户定义的异常。

[正文]
在正文块(在BEGIN和END之间)中实现控制流和SQL语句。

      允许DML语句,包括SELECT,INSERT,DELETE,UPDATE;事务相关的语法,包括COMMIT,ROLLBACK;控制流语句,包括IF,CASE,FOR,SIMPLE LOOP,WHILE,EXIT,CONTINUE,NULL;CURSOR操作语法,包括OPEN,FETCH,CLOSE,CURSOR FOR LOOP;其他允许的语法,包括PRINT,RETURN和RAISE。

      在SQL中使用SQL/PSM的优点之一是函数功能重载特色。当函数中其他块需要使用时现有的块可以被重载。

[异常处理]
在异常块(在EXCEPTION和END之间)中实现异常处理程序

[范围]
PSM由一组块组成,每个块由自己的范围,下面举个例子帮您理解

                     

控制流

Altibase PSM提供下列控制流语句

-IF:支持多重IF
-CASE
-LOOP:为防止死循环要明确循环退出条件
-WHILE
-FOR
-EXIT
-CONTINUE
-NULL:NULL语句什么都不做,不会影响语句流程,但提议提高可读性。