PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# dblink_exec

## 名称

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

## 大纲

    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)

上一页 | 起始页 | 下一页
dblink | 上一级 | dblink_open