小编Jam*_*uza的帖子

用于返回给定表的动态列集的函数

我有一个fields表来存储其他表的列信息:

CREATE TABLE public.fields (
   schema_name varchar(100), 
   table_name  varchar(100), 
   column_text varchar(100), 
   column_name varchar(100), 
   column_type varchar(100) default 'varchar(100)', 
   column_visible boolean
);
Run Code Online (Sandbox Code Playgroud)

我想创建一个函数来获取特定表的数据.刚试过这样的事:

create or replace function public.get_table(schema_name text,
                                            table_name text,
                                            active boolean default true)
  returns setof record as $$

declare 
    entity_name text default schema_name || '.' || table_name;
    r record;
begin
    for r in EXECUTE 'select * from ' || entity_name loop
        return next r;
    end loop;
    return;
end
$$
language plpgsql;
Run Code Online (Sandbox Code Playgroud)

使用此功能,我必须在调用它时指定列!

select * from public.get_table('public', 'users') as …
Run Code Online (Sandbox Code Playgroud)

postgresql function dynamic-sql plpgsql

4
推荐指数
1
解决办法
5700
查看次数

标签 统计

dynamic-sql ×1

function ×1

plpgsql ×1

postgresql ×1