【发布时间】:2017-05-19 18:23:32
【问题描述】:
我有一个包含多个表(几百个)的 postgres 数据库。数据库中表的子集 Foo具有相同的架构。
理想情况下,我想创建一个存储过程,它可以针对单个表或子集 Foo 中的所有表运行查询。
伪代码:
CREATE TABLE tbl_a (id INTEGER, name VARCHAR(32), weight double, age INTEGER);
CREATE TABLE tbl_b (id INTEGER, name VARCHAR(32), weight double, age INTEGER);
CREATE TABLE tbl_c (id INTEGER, name VARCHAR(32), weight double, age INTEGER);
CREATE TABLE tbl_d (id INTEGER, name VARCHAR(32), weight double, age INTEGER);
CREATE TYPE person_info AS (id INTEGER, name VARCHAR(32), weight double, age INTEGER);
CREATE FUNCTION generic_func(ARRAY one_or_more_table_names)
RETURNS person_info
-- Run query on table or all specified tables
AS $$ $$
LANGUAGE SQL;
如何在 Postgresql 9.x 中实现这个要求?
【问题讨论】:
-
不相关,但是:“Postgres 9.x”涵盖了 7 个不同的主要版本(其中两个不再支持)。您需要更具体地使用 Postgres 版本。
标签: sql postgresql stored-procedures dynamic-sql