postgresql函数返回不同的表结构

标签 postgresql function stored-procedures

对于 Postgresql 函数(存储过程):

我希望存储过程能够根据传递的参数返回不同的表结构。粗略示例:

CREATE OR REPLACE FUNCTION getMyinfo(emp_id varchar, inc_status) 
RETURNS TABLE [don't know how to set this...???]
AS 
$$
BEGIN
  if inc_status = false
    then
        return select fname, lname, emp_age from emp_data 
                  where id = emp_id;
    else
        return select fname, lname, emp_age, rev_code, m_stat 
                  where id = emp_id;
    end if;
END
$$

最佳答案

您可以将函数定义为 RETURNS SETOF record,但随后您必须在使用该函数的每个查询中指定 record 的定义,因为定义必须在查询解析时已知。

为了避免这种情况,您可以使用 json 作为返回类型。

关于postgresql函数返回不同的表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967807/

相关文章:

postgresql - 在 postgres 上使用索引进行慢速 sql 选择

postgresql - AWS Aurora Postgres 中的并行计划/查询

mysql - 如何加速我的 MySQL UUID v4 存储函数?

java存储过程与sql存储过程

sql - Postgres - 找到数组的最小值

sql - 在 Postgres 8.4 中为每一行调用一次函数进行更新

java - 错误 - 从 Java 调用 Oracle 函数

node.js - 如何使用sails.js 为模型定义实例方法

python - 如何从作为参数传递的类初始化对象

mysql - Mysql存储过程中如何创建游标