返回多态类型
最近更新时间: 2025-02-18 16:02:00
postgres=# CREATE OR REPLACE FUNCTION f23(a_arg anyelement) RETURNS anyelement AS
postgres-# $$
postgres$# BEGIN
postgres$# RETURN a_arg;
postgres$# END;
postgres$# $$
postgres-# LANGUAGE PLPGSQL;
CREATE FUNCTION
postgres=#
postgres=# SELECT * FROM f23('TDSQLPG'::text);
f23
------
TDSQLPG
(1 行记录)
postgres=# SELECT * FROM f23(1::integer);
f23
-----
1
(1 行记录)
postgres=# SELECT * FROM f23(ARRAY['TDSQLPG','pgxz']);
f23
---------------
{TDSQLPG,pgxz}
(1 行记录)
postgres=# SELECT * FROM f23(ROW(1,'TDSQLPG')::public.t_rec);
id | mc
----+------
1 | TDSQLPG
(1 行记录)
postgres=# CREATE OR REPLACE FUNCTION f24(a_arg ANYARRAY) RETURNS anyarray AS
postgres-# $$
postgres$# BEGIN
postgres$# RETURN a_arg;
postgres$# END;
postgres$# $$
postgres-# LANGUAGE PLPGSQL;
CREATE FUNCTION
postgres=#
postgres=# SELECT * FROM f24(ARRAY[1,2]::INTEGER[]);
f24
-------
{1,2}
(1 行记录)
postgres=# SELECT f24(ARRAY[t1.*]) FROM t1;
f24
--------------------------------------------------------
{"(1,TDSQLPG,TDSQLPG,202cb962ac59075b964b07152d234b70)"}
{"(2,pgxc,pgxc,202cb962ac59075b964b07152d234b70)"}
{"(3,pgxz,pgxz,202cb962ac59075b964b07152d234b70)"}
(3 行记录)
返回数据类型如果是多态,则函数最少需要定义一个多态参数。