素胚勾勒不出你
您可以使用:SELECT (ST_IsValidDetail(the_value)).* FROM the_table;...但是不幸的是,PostgreSQL实际上ST_IsValidDetail每行执行一次该功能。作为一种解决方法,您可以稍微处理一下查询,通过公用表表达式实现,然后在第二遍中提取元组:WITH interim_result(v) AS ( SELECT ST_IsValidDetail(the_value) FROM the_table)SELECT (v).* FROM interim_result;需要用括号括起来(v),以告诉解析器您所指的是一个值,而不是表名。演示:CREATE OR REPLACE FUNCTION multirows(x IN integer, a OUT integer, b OUT integer, c OUT integer) AS$$BEGIN RAISE NOTICE 'multirows(%) invoked', x; a := x; b := x+1; c := x+2; RETURN;END;$$ LANGUAGE plpgsql;craig=> SELECT multirows(x) FROM generate_series(1,2) x;NOTICE: multirows(1) invokedNOTICE: multirows(2) invoked multirows ----------- (1,2,3) (2,3,4)(2 rows)craig=> SELECT (multirows(x)).* FROM generate_series(1,2) x;NOTICE: multirows(1) invokedNOTICE: multirows(1) invokedNOTICE: multirows(1) invokedNOTICE: multirows(2) invokedNOTICE: multirows(2) invokedNOTICE: multirows(2) invoked a | b | c ---+---+--- 1 | 2 | 3 2 | 3 | 4(2 rows)craig=> WITH interim(v) AS (SELECT multirows(x) FROM generate_series(1,2) x)SELECT (v).* FROM interim;NOTICE: multirows(1) invokedNOTICE: multirows(2) invoked a | b | c ---+---+--- 1 | 2 | 3 2 | 3 | 4(2 rows)