PostgreSQL函数类型重用

时间:2018-07-11 06:53:42

标签: 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放置?

0 个答案:

没有答案