【问题标题】:postgresql stored procedure with query on several schema对多个模式进行查询的 postgresql 存储过程
【发布时间】:2011-04-02 13:38:17
【问题描述】:

在回答了上一个问题 (request over several schema) 之后,我尝试编写一个存储过程来为多个模式选择表(每个用户都有一个模式)。

create or replace public.select_simulations() returns setof simulation as $$
declare 
    users pg_user%ROWTYPE;
    simu simulation%ROWTYPE;
begin
    for users in select usename from pg_user where usename <> 'postgres' loop
        for simu in select id, name from (users.usename).simulation loop            
            return next simu;
        end loop;
    end loop;
end; 
$$

但它不接受(users.usename).simulation,并且没有括号会产生错误(似乎搜索子字段,而不是架构)...

那么,告诉users.usename 是模式名称的正确语法是什么?

感谢您的帮助!

【问题讨论】:

标签: postgresql stored-procedures schema


【解决方案1】:

你可以看看 for-in-execute 控制结构:

FOR record_or_row IN EXECUTE text_expression LOOP 
    statements
END LOOP [ label ];

http://www.postgresql.org/docs/8.1/static/plpgsql-control-structures.html#PLPGSQL-RECORDS-ITERATING

类似:

...

for users in select usename from pg_user where usename <> 'postgres' loop
    for simu in execute 'select id, name from '||quote_ident(users.usename)||'.simulation' loop
        return next simu;
    end loop;
end loop;
...

【讨论】:

    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多