Postgresql 如何使用sql语言从函数返回自定义类型,而不在函数中声明该类型?
只是在PostgreSQL中阅读这个答案 所以我们可以这样做Postgresql 如何使用sql语言从函数返回自定义类型,而不在函数中声明该类型?,postgresql,Postgresql,只是在PostgreSQL中阅读这个答案 所以我们可以这样做 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
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
?的情况下做同样的事情,所以这个问题可能不应该问,因为答案几乎是直观的
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;
或者只使用SQL
select cast((r[1], r[2], r[3]) as my_type) from regexp_split_to_array('a.b.c', '\.') r;
或者:选择(r[1]、r[2]、r[3])::我的类型…