ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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) ```