自定义存储过程和函数

自定义存储过程和函数

存储过程是一组事先编译好、能完成特定功能的sql语句集合,是一个独立的数据库对象。
存储过程类似于高级语言中的函数,可被用户的应用程序调用、执行。SPL是在GBase8t中
提供的一种流程控制的SQL,是GBase 8t对标准SQL的扩充,用于编写存储过程。GBase8t
中的存储过程包括SPL过程和SPL函数。存储过程将在创建时被解析和优化,它以可执行的
方式保存在system catalog表中。

存储过程的优点:

  • 模块化
    模块化对代码进行了封装,复用性提高,减少代码量
  • 提高性能
    事先进行编译存储在服务器中,以后对它的调用都不需再进行编译,因此存储过程的这
    种一次编译,多次执行的特点大大提高了程序执行的速度及性能
  • 减少网络流量
    存储过程经过编译存储在服务器上,数据的处理和操作均在服务器端进行。调用只需将存
    储过程的名称以及参数传递给服务器,不用每次访问传递很长的SPL语句段,从而降低了
    网络传输的开销
  • 提高安全性
    存储过程可以提高应用程序的安全性。参数化的存储过程有助于保护应用程序不受SQL注
    入攻击,此外换可以设定某些用户具有对指定的存储过程的使用权限,保障数据库安全。

创建存储过程语法

create procedure 存储过程名 参数列表 [specific <重载函数名>]
{语句块}
end procedure;
specific 关键字表示可以指定存储过程或函数一个简短的、独一无二的函数名称,这个名称
在数据库是唯一的。这个关键字也表名gbase 8t中定义的存储过程和函数是可以重载的,即可
定义多个具有相同名字的SPL函数,他们虽然名称相同但是参数或类型各不相同。

创建SPL函数的一般格式:

create function <函数名> (<参数列表>) returning <返回值类型> [as <返回值名>] [specific <重载函数名>]
{语句块}
end function;
returning 或 returns 关键字用来定义返回值的返回类型,返回类型可以是除Serial/Serial8和
Text/Byte外的任意一种SQLd 数据类型,在定义返回值类型时我们可以使用AS为返回值取一个名字。
在过程体内必须至少有一个return语句。

SPL中的流程控制

关键字:WHERE、IF、ELSE、BREAK、CASE等
在gbase 8t中有两种形式的选择结构,一种是if..else,另一种是case结构
if <布尔表达式>
	{spl语句块}
[
else
{spl语句块}
]


case(条件表达式)
when<比较值1> then
spl语句1
when<比较值2>then
spl语句2
...
[else
spl语句]
end case;

循环结构:
while(布尔表达式)
{SPL语句块}
end while;

执行spl函数或存储过程

execute procudure <存储过程 | spl函数名>(参数列表);

一个存储过程调用另一个存储过程:

call <存储过程 | spl函数名>(参数列表)[returning <变量名>]

删除spl函数或存储过程

drop [specific] procedure <存储过程>(参数列表);

删除spl函数语法格式

drop [specific] function <存储过程名>(参数列表);

gbase8t 提供了一个语法格式用来删除spl的存储过程和函数

drop [specific] routine <存储过程名>(参数列表);
posted @ 2022-07-22 16:53  乐酷yuan  阅读(125)  评论(0编辑  收藏  举报