dblink_exec

Name

dblink_exec -- 在远程数据库中执行命令

Synopsis

dblink_exec(text connname, text sql [, bool fail_on_error]) returns text
dblink_exec(text connstr, text sql [, bool fail_on_error]) returns text
dblink_exec(text sql [, bool fail_on_error]) returns text

描述

dblink_exec在远程数据库中执行命令(即不返回行的任何SQL语句)。

当给定两个text参数时,第一个作为持久连接名称首先被查找;如果发现了, 那么在连接上执行该命令。如果没有发现, 那么第一个参数被看作dblink_connect的连接信息字符串, 并且指定连接为了该命令的整个时间段。

参数

conname

要使用的连接名称;省略这个参数使用未命名连接。

connstr

连接信息字符串,如先前描述的dblink_connect

sql

你希望在远程数据库中执行的SQL命令, 比如insert into foo values(0,'a','{"a0","b0","c0"}')

fail_on_error

如果真(忽略时缺省)那么在连接的远程端抛出的错误也会导致本地抛出错误, 如果假,那么远程错误在本地作为NOTICE被报告, 并且函数的返回值设置为ERROR

返回值

返回状态,该命令的状态字符串或者ERROR

例子

SELECT dblink_connect('dbname=dblink_test_standby');
 dblink_connect
----------------
 OK
(1 row)

SELECT dblink_exec('insert into foo values(21,''z'',''{"a0","b0","c0"}'');');
   dblink_exec
-----------------
 INSERT 943366 1
(1 row)

SELECT dblink_connect('myconn', 'dbname=regression');
 dblink_connect
----------------
 OK
(1 row)

SELECT dblink_exec('myconn', 'insert into foo values(21,''z'',''{"a0","b0","c0"}'');');
   dblink_exec
------------------
 INSERT 6432584 1
(1 row)

SELECT dblink_exec('myconn', 'insert into pg_class values (''foo'')',false);
NOTICE:  sql error
DETAIL:  ERROR:  null value in column "relnamespace" violates not-null constraint

 dblink_exec
-------------
 ERROR
(1 row)