Я хочу использовать DBLink в PL/PgSQL хранимой процедуры таким образом:Postgres DBLink вызов хранимой процедуры с указанием уровня транзакций
PERFORM dblink_exec('myconn', 'BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE');
PERFORM dblink_exec('myconn', 'SELECT another_stored_procedure()');
PERFORM dblink_exec('myconn', 'COMMIT');
, но я получил сообщение об ошибке во время выполнения:
ERROR: statement returning results not allowed
CONTEXT: SQL statement "SELECT dblink_exec('myconn', 'select another_stored_procedure()')"
так выполнение не выполняется, хотя я пытался получить желаемый результат по-разному.
UPDATE 1:
Я знаю, что хранимые процедуры в PostgreSQL являются транзакционными. Я использую dblink для функции автономных транзакций, чтобы использовать ее на одном сервере.
Дело в том, что уровень транзакций по умолчанию на моем сервере «прочитан», но иногда мне нужно начинать транзакции с другого уровня, например. «Сериализация».
Поэтому мне нужно выполнить хранимую процедуру в автономной транзакции с явным указанием уровня транзакции.
И насколько я знаю, dblink позволяет это, но мне не удалось найти полезную информацию о функциях dblink или dblink_exec, которые подходят для моей ситуации.
У вас есть другой сервер PostgreSQL на другом конце? – pozs
@pozs См. Обновление 1 PLS – FrozenHeart