【发布时间】:2015-02-03 12:37:11
【问题描述】:
我想以这种方式在 PL/pgSQL 存储过程中使用 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()')"
所以执行失败,尽管我尝试以不同的方式获得所需的结果。
更新 1:
我知道 postgresql 中的存储过程是事务性的。 我将 dblink 用于自治事务功能,以便在同一台服务器上使用它。
问题是我服务器上的默认事务级别 是“读取提交”,但有时我需要启动另一个级别的事务,例如“可序列化”。
所以我需要在自治事务中执行存储过程,并明确指定事务级别。
据我所知 dblink 允许这样做,但我没有找到任何适合我情况的关于 dblink 或 dblink_exec 函数的有用信息。
【问题讨论】:
-
你是否连接了另一端的另一个 PostgreSQL 服务器?
-
@pozs 请参阅更新 1
标签: postgresql plpgsql dblink