plpgsql在具有多个值的另一个函数中调用一个函数

时间:2017-11-06 11:41:39

标签: postgresql plpgsql

从一个select语句中获取多个值,并将这些值单独传递给另一个函数。我们需要表格格式的结果。

选择语句结果

123,abc,45c     

并将这些值传递给另一个sql查询,结果应为

clo1    col2(Int)   Col3(Int)   Col4 (Char)
123 45  98  A
123 58  97  B
123 72  58  C
abc 22  64  A
abc 58  87  B
abc 89  59  C
45c 78  52  A
45c 98  30  B
45c 100 54  C

2 个答案:

答案 0 :(得分:0)

你可以简单地在select语句上调用函数,它会将所有结果传递给函数1,比如

SELECT func(123,abc,45c) FROM tableX

以表格格式返回结果,根据输出设计将函数的返回类型设置为表格,如

CREATE OR REPLACE FUNCTION func(a int,b bigint, c int)
RETURNS TABLE(x int, y int) AS $$
BEGIN
  -- Your function's internal processing
  RETURN QUERY SELECT x, y FROM Tablex WHERE x = a;
END;
$$ LANGUAGE plpgsql;

答案 1 :(得分:0)

使用lateral可以参考选择结果:

select f.*
from
    (
        select a, b, c
        from t
        where x = 1
    ) s
    cross join lateral
    my_function(a, b, c) f