暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBASE:GBase 8s SQL 指南:教程_12 创建和使用 SPL 例程 (11)

GBASE数据库 2022-01-13
293

指定 SPL 函数是否为变体
当您创建 SPL 时,在缺省情况下,该函数为变体。当使用相同的参数调用函数时,如果它
返回不同的结果,或如果它修改数据库或变量状态,则该函数为变体。例如,返回当前的
日期或时间的函数是变体函数。
虽然在缺省情况下,SPL 函数为变体,但如果当您创建函数时指定 WITH NOT VARIANT,
则该函数不可包含任何 SQL 语句。您仅可在非变体函数上定义函数索引。
添加修饰符
当您编写 SPL 函数时,您可使用 WITH 子句来将修饰符添加到 CREATE FUNCTION 语
句。在 WITH 子句中,您可指定 COMMUTATOR 或 NEGATOR 函数。其他修饰符是用
于外部例程的。
限制: 您仅可以 SPL 函数使用 COMMUTATOR 或 NEGATOR 修饰符。您不可以 SPL 过
程使用任何修饰符。
COMMUTATOR 修饰符
COMMUTATOR 修饰符允许您指定 SPL 函数为您正在创建的 SPL 函数的转换函数。转
换函数接受相同的参数作为您正在创建的 SPL 函数,但以相反的顺序,并返回相同值。对
于 SQL 优化器的执行,转换函数的成本效益比更高。
例如,如果 a 小于 b,则函数 lessthan(a,b) 返回 TRUE, 而如果 b 大于或等于 a,
则 greaterthan(b,a) 返回 TRUE,二者是转换函数。下图使用 WITH 子句来定义转换函数。
图: 定义转换函数


如果 greaterthan(b,a) 的执行成本低于 lessthan(a,b),则优化器可能使用 greaterthan(b,a)。要
指定转换函数,您必须同时拥有该转换函数和您正在编写的 SPL 函数。您还必须将两个函
数的 Execute 权限授予您的 SPL 函数的用户。
要了解授予权限的详细描述,请参阅《GBase 8s SQL 指南:语法》 中的 GRANT 语句的
描述。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论