• PostgreSQL 表值函数


    方法1
    create
    type deptSon as ( mid varchar(36), id varchar(36), name varchar(200), DeptParentId varchar(36) ); CREATE OR REPLACE FUNCTION function2 () RETURNS SETOF deptSon AS $body$ SELECT id,id,name,parentId from dept where id='73684883-5F9C-44F3-8DAF-0037AB304A82' union all SELECT id,id,name,parentId from dept where id='73684883-5F9C-44F3-8DAF-0037AB304A82'; $body$ LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; exampledb=> exampledb=> select function2 () ; function2 ---------------------------------------------------------------------------------------------------------------------------------- (73684883-5F9C-44F3-8DAF-0037AB304A82,73684883-5F9C-44F3-8DAF-0037AB304A82,人事行政部,04009320-7B51-4A6B-84E6-4BFDD4E9066A)
    ... (
    73684883-5F9C-44F3-8DAF-0037AB304A82,73684883-5F9C-44F3-8DAF-0037AB304A82,人事行政部,04009320-7B51-4A6B-84E6-4BFDD4E9066A) (2 rows) exampledb=> exampledb=> select * from function2 () ; mid |id |name | deptparentid --------------------------------------+--------------------------------------+-----------------+-------------------------------------- 73684883-5F9C-44F3-8DAF-0037AB304A82 | 73684883-5F9C-44F3-8DAF-0037AB304A82 | 人事行政部 | 04009320-7B51-4A6B-84E6-4BFDD4E9066A
    ...
    73684883-5F9C-44F3-8DAF-0037AB304A82 | 73684883-5F9C-44F3-8DAF-0037AB304A82 | 人事行政部 | 04009320-7B51-4A6B-84E6-4BFDD4E9066A (2 rows)
    方法2
    CREATE
    OR REPLACE FUNCTION GetSonDeptListById (varchar(36)) RETURNS SETOF deptSon AS $body$ WITH RECURSIVE deptSon (mid,id,name,parentId) AS ( SELECT id as mid,id,name,parentId From Dept Where (id = $1) or ($1 is null) UNION ALL Select cte.mid,d.id,d.name,d.parentId from Dept d Inner Join deptSon cte on cte.id=d.parentId )select * from deptSon $body$ LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; CREATE OR REPLACE FUNCTION GetSonDeptListById () --设置默认值* RETURNS SETOF deptSon AS $body$ select * from GetSonDeptListById(null); $body$ LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; exampledb=> select * from GetSonDeptListById('04009320-7B51-4A6B-84E6-4BFDD4E9066A'); mid | id | name | deptparentid --------------------------------------+--------------------------------------+-----------------------+-------------------------------------- 04009320-7B51-4A6B-84E6-4BFDD4E9066A | 04009320-7B51-4A6B-84E6-4BFDD4E9066A | 广州 | 00000000-0000-0000-0000-000000000000 ... 04009320-7B51-4A6B-84E6-4BFDD4E9066A | 79FAD805-5B0F-4C45-B30B-D3CF86275978 | 天河 | E68F40DA-A88D-492A-9265-2A60678C8DC4 (10 rows)
    方法3
    CREATE
    OR REPLACE FUNCTION execute(filter varchar(36)) RETURNS TABLE (id varchar(36), name varchar(200)) AS $$ BEGIN RETURN QUERY EXECUTE 'SELECT id,name FROM dept where id = $1;' USING filter; END; $$ LANGUAGE PLPGSQL;

    CREATE OR REPLACE FUNCTION execute(filter varchar(36),filter2 varchar(36))
    RETURNS TABLE (Aid varchar(36), Aname varchar(200))
    AS $$
    BEGIN
        RETURN QUERY SELECT id,name FROM dept where id = $1 OR id = $2;
    END;
    $$ LANGUAGE PLPGSQL;
    
    
    CREATE OR REPLACE FUNCTION execute(filter varchar(36),filter2 varchar(36))
    RETURNS TABLE (Aid varchar(36), Aname varchar(200))
    AS $$
    BEGIN
        RETURN QUERY WITH RECURSIVE org AS (SELECT id,name FROM dept where id = $1 OR id = $2) SELECT * FROM org;
    END;
    $$ LANGUAGE PLPGSQL;
     
  • 相关阅读:
    Eclipse 的控制台console乱码
    Cucumber java + Webdriver(一)
    安装 pywin32-218.win32-py2.7.exe 报错python version 2.7 required,which was not found in the registry解决方案
    安装pycharm软件后,打开robot framework怎么默认用pycharm打开
    C++中的智能指针
    RBF(径向基)神经网络
    C/C++指针参数赋值问题
    二叉树以及常见面试题
    对于正则化的理解
    GBDT算法
  • 原文地址:https://www.cnblogs.com/Richard2014/p/9930693.html
Copyright © 2020-2023  润新知