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

OceanBase系统架构PL函数

2024-01-20
155

函数可以理解为一种特殊的子程序,函数可以有返回值,并且所有参数都是 IN 类型。

函数的结构

函数的结构如下,与存储过程相比,至少多一个或多个 RETURNS 子句:

CREATE
    [DEFINER = user]
    FUNCTION sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...] routine_body

func_parameter:
    param_name type

type:
    Any valid MySQL data type

characteristic: {
    COMMENT 'string'
  | LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
}

routine_body:
    Valid SQL routine statement

函数的优点

函数的优点与子程序基本相同,但是因为函数有返回值所以函数可以作为表达式使用。将功能定义为函数,并在表达式中使用,这种用法更灵活、更丰富、更符合编程习惯。

函数的创建

函数也要通过 CREATE 语句进行创建,并需满足如下条件:

  • 函数需要考虑返回值的设置。

  • 所有函数必须至少有一个 RETURNS 语句。

    obclient> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC
         RETURN CONCAT('Hello, ',s,'!');/
    Query OK, 0 rows affected 
    
    obclient> SELECT hello('world');/
    +----------------+
    | hello('world') |
    +----------------+
    | Hello, world!  |
    +----------------+
    1 row in set
    
  • 函数要作为表达式被调用,需要与其他语句结合使用。

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

评论