Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何使用sql语言从函数返回自定义类型,而不在函数中声明该类型?_Postgresql - Fatal编程技术网

Postgresql 如何使用sql语言从函数返回自定义类型,而不在函数中声明该类型?

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

只是在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_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])::我的类型…