在PostgreSQL中阅读关于using a new type to return multiple fields的答案。
所以我们可以这样做。
CREATE TYPE my_type AS (a text, b text, c text)
CREATE OR REPLACE FUNCTION get()
RETURNS my_type AS
$$
DECLARE
result_record my_type;
BEGIN
SELECT r[1], r[2], r[3]
INTO result_record.a, result_record.b, result_record.c
FROM regexp_split_to_array('a.b.c', '\.') r;
RETURN result_record;
END
$$ LANGUAGE plpgsql;
我想知道如果不在函数中声明自定义类型和/或使用语言sql
而不是plpgsql
,我们是否可以做同样的事情?
答案 0 :(得分:1)
好的,所以不应该问这个问题,因为答案几乎是直观的。
CREATE OR REPLACE FUNCTION get2()
RETURNS my_type AS
$$
SELECT r[1] AS a, r[2] AS b, r[3] AS c
FROM regexp_split_to_array('a.b.c', '\.') r;
$$ LANGUAGE sql;
答案 1 :(得分:0)
或仅使用SQL
select cast((r[1], r[2], r[3]) as my_type) from regexp_split_to_array('a.b.c', '\.') r;