• PL/pgSQL学习笔记之八


    http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html

    另外一种声明 PL/pgSQL 函数的方法是使用 returns table,例如:

    CREATE FUNCTION extended_sales(p_itemno int)
    RETURNS TABLE(quantity int, total numeric) AS $$
    BEGIN
        RETURN QUERY SELECT quantity, quantity * price FROM sales
                     WHERE itemno = p_itemno;
    END;
    $$ LANGUAGE plpgsql;

    这类似于声明一个或多个OUT参数,或者指定 RETURNS SETOF。

    当一个PL/pgSQL函数的返回类型定义为多态类型(anyelementanyarrayanynonarray, 或anyenum),一个特殊的参数$0会被创建。它的数据类型是函数的实际返回类型,是从输入类型中推演出来的。这允许函数访问其实际的返回值。$0 初始化为null,其后可以被函数所改变,因此它可以用来保留返回值。$0也可以被赋予别名。例如,下面的函数在任何拥有+ 操作符的数据类型下执行

    CREATE FUNCTION add_three_values(v1 anyelement, v2 anyelement, v3 anyelement)
    RETURNS anyelement AS $$
    DECLARE
        result ALIAS FOR $0;
    BEGIN
        result := v1 + v2 + v3;
        RETURN result;
    END;
    $$ LANGUAGE plpgsql;

    也可以通过声明多个多态类型的输出参数来完成同样的目的。在此时,$0参数没有使用;输出参数自己就完成了此目的。例如:

    CREATE FUNCTION add_three_values(v1 anyelement, v2 anyelement, v3 anyelement,
                                     OUT sum anyelement)
    AS $$
    BEGIN
        sum := v1 + v2 + v3;
    END;
    $$ LANGUAGE plpgsql;
  • 相关阅读:
    拥有最多糖果的孩子
    求1+2+…+n
    网络-中间代理
    Header中的Referer属性表示
    ios13.4post请求出现网错错误 network err
    10.8&10.10
    9.23&9.27
    9.16&9.19
    校内模拟赛划水报告(9.9,9.11)
    男人八题 划水题解
  • 原文地址:https://www.cnblogs.com/gaojian/p/3189780.html
Copyright © 2020-2023  润新知