美文网首页
PL/pgSQL从入门到放弃(3)-函数

PL/pgSQL从入门到放弃(3)-函数

作者: 小刘先生 | 来源:发表于2020-02-29 17:04 被阅读0次

    本文由 @小刘先森 原创,转载请注明出处。

    PL/pgSQL系列文章,方便小伙伴们学习。

    PL/pgSQL从入门到放弃(1)-入门
    PL/pgSQL从入门到放弃(2)-变量定义与数据类型
    PL/pgSQL从入门到放弃(3)-函数
    PL/pgSQL从入门到放弃(4)-函数返回各种常用数据类型
    PL/pgSQL从入门到放弃(5)-控制结构
    PL/pgSQL从入门到放弃(6)-游标

    函数声明

    通过执行CREATE FUNCTION命令,以PL/pgSQL写成的函数可以被定义到服务器中。

    CREATE or REPLACE FUNCTION somefunc(integer, text) RETURNS integer
    AS 'function body text'
    LANGUAGE plpgsql;
    

    PL/pgSQL是一种块结构的语言。一个块被定义为:

    [ <<label>> ]
    [ DECLARE
        declarations 
    BEGIN
        statements
    END [ label ];
    

    目前CREATE FUNCTION函数体就是简单的一个字符串。通常在写函数体时,使用美元符号引用通常比使用普通单引号语法更有帮助。如果没有美元引用,函数体中的任何单引号或者反斜线必须通过双写来转义。
    推荐写法如下:

    CREATE FUNCTION somefunc(integer, text) RETURNS integer AS $$
    DECLARE
    BEGIN
    END;
    $$ LANGUAGE plpgsql;
    

    函数参数

    声明函数参数被命名为标识符$1、$2等等。可选地,能够为$n参数名声明别名来增加可读性。不管是别名还是数字标识符都能用来引用参数值。

    数字标识函数参数

    CREATE FUNCTION hello(varchar) RETURNS varchar AS $$
    DECLARE
    BEGIN
        RETURN  '你好,' || $1;
    END;
    $$ LANGUAGE plpgsql;
    

    示例结果:
    <font size='2px' color='#E7876B'>小刘先森为作者名字</font>


    hello结果

    别名函数参数

    • 创建函数时为参数给定一个名称推荐
    CREATE FUNCTION hello(name varchar) RETURNS varchar AS $$
    DECLARE
    BEGIN
        RETURN  '你好,' || name ;
    END;
    $$ LANGUAGE plpgsql;
    
    • 显式地使用声明语法声明一个别名
    CREATE FUNCTION hello(varchar) RETURNS varchar AS $$
    DECLARE
        name ALIAS FOR $1;
    BEGIN
        RETURN  '你好,' || name ;
    END;
    $$ LANGUAGE plpgsql;
    

    函数返回

    • returns返回
      示例函数就使用returns返回了一个varchar类型的值。
    CREATE FUNCTION hello(name varchar) RETURNS varchar AS $$
    DECLARE
    BEGIN
        RETURN  '你好,' || name ;
    END;
    $$ LANGUAGE plpgsql;
    
    • 输出参数返回
      输出参数在返回多个值时很有用。在定义函数时使用OUT关键字标识返回参数。示例如下:
    CREATE FUNCTION sum_n_product(x int, y int, OUT sum int, OUT prod int) AS $$
    BEGIN
        sum := x + y;
        prod := x * y;
    END;
    $$ LANGUAGE plpgsql;
    

    <font color='red'>输出结果如下:</font>

    输出结果
    示例函数的结果实际上创建了一个匿名记录类型。如果使用RETURNS返回,它必须是RETURNS record。使用RETURNS record返回写法如下:
    CREATE or replace FUNCTION sum_n_product(x int, y int) returns record AS $$
    DECLARE
        r_data record;
        sum int;
        prod int;
    BEGIN
        sum := x + y;
        prod := x * y;
        r_data = (sum , prod );
        return r_data;
    END;
    $$ LANGUAGE plpgsql;
    

    <font color='red'>输出结果如下:</font>


    直接返回 按照记录方式返回结果

    关于作者

    大家有需要介绍哪些部分,或者一些想法欢迎联系我。

    GISer
    QQ: 1016817543
    邮箱:1016817543@qq.com
    github:https://github.com/MrSmallLiu (欢迎star)

    相关链接

    欢迎各位Star、Issues、PR

    相关文章

      网友评论

          本文标题:PL/pgSQL从入门到放弃(3)-函数

          本文链接:https://www.haomeiwen.com/subject/okcmhhtx.html