Postgresql 如何将此函数编写为pL/pgSQl函数?

Postgresql 如何将此函数编写为pL/pgSQl函数?,postgresql,plpgsql,Postgresql,Plpgsql,我试图在PL/pgSQL函数中实现一些业务逻辑 我已经拼凑了一些伪代码来解释我想要包含在函数中的业务逻辑的类型 注意:此函数返回一个表,因此我可以在如下查询中使用它: 从某个表格的SELECT*中选择A.col1、B.col1,返回函数1、1、2、3作为A,tbl2作为B pl/PgSQL函数的伪代码如下: CREATE FUNCTION some_table_returning_func(uid int, type_id int, filter_type_id int, filter_id i

我试图在PL/pgSQL函数中实现一些业务逻辑

我已经拼凑了一些伪代码来解释我想要包含在函数中的业务逻辑的类型

注意:此函数返回一个表,因此我可以在如下查询中使用它:

从某个表格的SELECT*中选择A.col1、B.col1,返回函数1、1、2、3作为A,tbl2作为B

pl/PgSQL函数的伪代码如下:

CREATE FUNCTION some_table_returning_func(uid int, type_id int, filter_type_id int, filter_id int) RETURNS TABLE AS $$

  DECLARE
  where_clause text := 'tbl1.id = ' + uid;
  ret TABLE;

  BEGIN

  switch (filter_type_id)
  {
      case 1:
     switch (filter_id)
     {  
         case 1:
                where_clause += ' AND tbl1.item_id = tbl2.id AND tbl2.type_id = filter_id';
                break;

             //other cases follow ...
     }
     break;

      //other cases follow ...
   }

   // where clause has been built, now run query based on the type
   ret = SELECT [COL1, ... COLN] WHERE where_clause;

   IF (type_id <> 1) THEN
      return ret;
   ELSE
      return select * from another_table_returning_func(ret,123);
   ENDIF;

END;
$$ LANGUAGE plpgsql;
我有以下问题:

如何正确编写函数,即使用生成的WHERE子句执行查询并返回表

如何编写一个PL/pgSQL函数来接受一个表和一个整数,并返回一个表和另一个表返回函数


一,。您可以使用SETOF子句返回类似于表的结果:RETURNS SETOF tablename