GBase 8a 支持存储过程、自定义函数的定义和使用

GBase 8a 支持存储过程和自定义函数,适用于多客户端操作、安全增强及性能提升。这些过程和函数遵循 SQL:2003 标准,可创建、修改、删除,且支持异常处理。创建时需有 CREATE ROUTINE 权限,调用需 EXECUTE 权限。存储过程可包含 SELECT 语句返回结果集,而函数不能。此外,GBase 8a 提供了流程控制结构如 IF、WHILE、FOR 循环等,并支持静态和动态游标。
摘要由CSDN通过智能技术生成

GBase 8a存储过程、函数:

一.概述  

存储过程是一组可以完成特定功能的 SQL 语句集,经编译后存储在数据库 中。用户在执行存储过程时,需要指定存储过程的名称并给出参数(如果存储 过程里包含参数)。 在如下情况中,存储过程非常有用:  当多个客户端应用程序是由不同的语言编写,或者运行在不同的平台, 但需要执行同样的数据库操作。  当安全非常重要时。例如,银行对所有常用的操作都使用存储过程。 这提供了一个一致的和安全的环境,并且存储过程可以保证每一个操 作都正确的写入日志。如此设置,应用程序和用户将不能直接访问数 据表,只能执行特定的存储过程。  存储过程可以提高性能,这是因为只需要在服务器和客户端之间传递 更少的信息。负面影响是增加了数据库服务器的负担,因为在服务器 端执行更多的任务而在客户端(应用程序)则只需执行较少的任务。 这在一个或很少的数据库服务器连接有大量客户端(比如 Web 服务器) 的情况下则更明显。  存储过程允许用户在数据库服务器中使用函数库。这正是现代应用程 序语言具有的特性,例如,通过使用类来进行程序设计。这些客户端 应用程序语言特性不论是否应用于数据库端的设计,对程序员来说采 用这样的方法还是很有益处的。 GBase 8a 存储过程遵循 SQL:2003 标准。 GBase 8a SQL 参考手册 - 712 - 南大通用数据技术股份有限公司 GBase 8a 存储过程仍在不断地完善中。本章中所描述的所有语法都被有效 地支持,其局限性和扩展要求将被记录备案。 关于存储过程的异常处理方法请参见《GBase 8a 存储过程异常处理参考手册》。

二. 创建存储过程、函数

存储过程和函数是由 CREATE PROCEDURE 和 CREATE FUNCTION 语句 所创建的程序。存储过程通过 CALL 语句来调用,而且只能通过输出变量得到 返回值。函数可以像其它函数一样从语句内部来调用(通过调用函数名),并 返回一个标量值。存储程序(过程和函数)也可以调用其它存储程序(过程和 函数)。 每个存储过程或函数都与一个特定的数据库相联系: 当存储程序(过程和函数)被调用时,隐含的 USE database_name 被执行 (当存储程序(过程和函数)结束时完成),不允许在存储程序(过程和函数) 中使用 USE 语句。 用户能使用数据库名来限定存储程序(过程和函数)名。这可以用来指明 不在当前数据库中的存储程序(过程和函数)。例如,要调用一个与 gbase 数据 库相关联的存储过程 p 或函数 f,用户可以使用 CALL gbase.p()或 gbase.f()。 当一个数据库被删除了,所有与它相关的存储程序(过程和函数)也都被 删除了。 GBase 8a 允许在存储过程中使用标准的 SELECT 语句。这样,一个查询的 结果简单直接地传送到客户端。多个 SELECT 语句产生多个结果集,所以客户 端必须使用一个支持多结果集的 GBase 8a 客户端库。 要创建一个存储程序(过程和函数),必须具有 CREATE ROUTINE 权限, ALTER ROUTINE 和 EXECUTE 权限自动的授予给它的创建者。如果开启更新 日志,用户可能需要 SUPER 权限。 GBase 8a SQL 参考手册 南大通用数据技术股份有限公司 - 713 - 在默认情况下,存储程序(过程和函数)与当前的数据库相关联。要显式 的将过程与数据库联系起来,那用户创建存储程序(过程和函数)时需要将它 的名字的格式写为 database_name.sp_name。 在括号中必须要有参数列表。如果没有参数,应使用空的参数列表()。默认 参数为 IN 参数。如果要将一个参数指定为其它类型,则请在参数名前使用关键 字。 使用 RETURNS 子句(只有 FUNCTION 才能指定 RETURNS 子句)指明函 数的返回类型时,函数体中必须包含一个 RETURN 语句。 如果一个存储过程或函数对同样的输入参数得到同样的结果,则被认为它 是”确定的(” DETERMINISTIC),否则就是”非确定”的(NOT DETERMINISTIC)。 如果没有指明是 DETERMINISTIC 还是 NOT DETERMINISTIC,缺省是 NOT DETERMINISTIC。 当前 DETERMINISTIC 特性是可接受的,但并不被优化器所使用。然而, 如果更新日志被激活,这个特性将影响到 GBase 8a 是否接受过程的定义。 几个特征参数提供了程序的数据使用信息。  SQL SECURITY 参数用来指明,此程序的执行权限是赋予创建者还是 调用者。缺省的值是 DEFINER。创建者和调用者必须要有对与程序相 关的数据库的访问权。要执行存储程序(过程和函数)必须具有 EXECUTE 权限,必须具有这个权限的用户要么是定义者,要么是调用 者,这依赖于如何设置 SQL SECURITY 特征。 COMMENT 语句是 GBase 8a 的扩展,可以用来描述存储过程。可以使用 SHOW CREATE PROCEDURE 和 SHOW CREATE FUNCTION 语句来显示这些 信息。 GBase 8a 允许存储程序(过程和函数)包含 DD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值