首页 > 解决方案 > PostgreSQL 函数类型重用

问题描述

我有一个函数,它返回一个表。我需要另一个函数来继承相同的输出类型,如下所示:

CREATE OR REPLACE FUNCTION t_report (pMedia text[])
  RETURNS TABLE (
    media text) AS
$func$
DECLARE
   sql text;
BEGIN
   sql := 'SELECT
            tStreams.Media
        FROM
            (SELECT
                ''Audio'' as Media
            UNION ALL
            SELECT
                ''Video'' as Media
            UNION ALL
            SELECT
                ''App Sharing'' as Media) tStreams
            WHERE tStreams.Media in (select unnest($1))';

   RETURN QUERY EXECUTE sql
   USING pMedia
   ;
END
$func$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION t_report (pMedia text)
  RETURNS TABLE (
    media text) AS
$func$
BEGIN
   RETURN QUERY EXECUTE 'SELECT * FROM t_report(ARRAY[$1])' USING pMedia
   ;
END
$func$ LANGUAGE plpgsql;

SELECT *
    FROM t_report('Audio');

这很好用,但我需要第二个函数从第一个函数继承类型。是否可以直接进行,或者我需要创建特定类型并将其作为 RETURNS SETOF MyType 放入?

标签: postgresql

解决方案


推荐阅读