如何在Postgres中将类型拆分为多个列?

Dav*_*vid 6 postgresql plpgsql plperl

我有以下代码从pl/python返回多个值:

CREATE TYPE named_value AS (
  name   text,
  value  integer
);
CREATE or replace FUNCTION make_pair (name text, value integer)
  RETURNS named_value
AS $$
  return [ name, value ]
$$ LANGUAGE plpythonu;

select make_pair('egg', 4) as column;
Run Code Online (Sandbox Code Playgroud)

输出是:

column
(egg,4)
Run Code Online (Sandbox Code Playgroud)

我想要做的是将输出分成两个单独的列.像这样:

column, column2
egg, 4
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?用Google搜索了1个小时让我无处可去.所以我希望我最后会添加一些搜索关键字:多个返回值多个结果多个列不需要列表不需要设置

ara*_*nid 6

是的,这个语法有点古怪,需要额外的括号:

select (make_pair('egg', 4)).name
Run Code Online (Sandbox Code Playgroud)

要从输出中获取多个组件而只调用一次该函数,可以使用子选择:

select (x.column).name, (x.column).value from (select make_pair('egg', 4) as column) x;
Run Code Online (Sandbox Code Playgroud)