хранимая процедура postgresql с запросом по нескольким схемам - PullRequest
0 голосов
/ 23 августа 2010

После некоторого ответа на предыдущий вопрос ( запрос по нескольким схемам ) я пытаюсь написать хранимую процедуру для выбора таблиц для нескольких схем (у каждого пользователя есть схема).

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 это имя схемы?

Спасибо за помощь!

1 Ответ

1 голос
/ 23 августа 2010

Вы можете взглянуть на структуру управления для исполнения:

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;
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...