fla*_*ato 5 postgresql types stored-procedures record plpgsql
我正在使用PostgreSQL数据库.
我有一个我的plpgsql FUNCTION,返回一个record具有任意数量列的单个.
由于这种任意性,我需要使用类似的东西:
SELECT * FROM my_function(97)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为Postgres给了我以下错误:
返回"记录"的函数需要列定义列表
但如果我这样做:
SELECT my_function(97)
Run Code Online (Sandbox Code Playgroud)
我可以看到预期的结果,但封装在一个列中.
有没有办法将预期结果作为函数预期的一组列获取,而不是一个封装所有列的列?
当在选择列表中使用集合返回函数 (setof) 时,在 FROM 的左侧,该函数返回复合类型。当使用表作为函数的输入时,很难避免在选择列表中使用函数。
从复合类型的单列中选择项目的方法如下:
SELECT
(my_function).field1,
(my_function).field2,
(my_function).field3
FROM
(SELECT my_function(*)
FROM sometable) t
Run Code Online (Sandbox Code Playgroud)
或者更简单地喜欢
SELECT (my_function('input thing')).field1
Run Code Online (Sandbox Code Playgroud)