Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgresql+;dblink+;插入并返回_Postgresql_Insert_Dblink - Fatal编程技术网

postgresql+;dblink+;插入并返回

postgresql+;dblink+;插入并返回,postgresql,insert,dblink,Postgresql,Insert,Dblink,我需要在远程数据库中插入一条记录并插入id。我做错了什么 DECLARE ticketvar mytable%rowtype; SqlCommand TEXT; BEGIN ticketvar.c1 := somevalue; ticketvar.c2 := somevalue; SqlCommand := 'INSERT INTO mytable ( c1, c2) VALUES (||ticketvar.c1||, ||ticketvar.c2||) returning

我需要在远程数据库中插入一条记录并插入id。我做错了什么

DECLARE

ticketvar mytable%rowtype;

SqlCommand TEXT;

BEGIN    

ticketvar.c1 := somevalue;
ticketvar.c2 := somevalue;

SqlCommand := 'INSERT INTO mytable ( c1, c2)  VALUES (||ticketvar.c1||, ||ticketvar.c2||) returning tid';

tid =  (select *  from dblink('mydatawrapper',SqlCommand)  AS t1(bigint tid)  );

这引起了一个错误`

错误:表“ticketvar”的子句条目中缺少`

使用select语句,一切正常:

result = (select *  from dblink('mydatawrapper','SELECT tid FROM mytable WHERE c1='||c1||'')  AS t1(bigint tid) );

您需要连接,基于此,您可以使用
returning
执行插入,就像使用
sqlCommand
一样


回答这个问题。在我看来,您正在使用plSQL—简单的SQL就足够了

使用外部数据包装器+dblink对我有效的示例:

-- if text field has apostrophes:
value2 = replace(value2,'''','''''');

q1 = 'INSERT INTO foreign_table1( field1,field2,field3) 
      VALUES ('||value1||','''||value2||''', now()) RETURNING id';

SELECT * FROM dblink('foreign_server', q1) 
         AS foreign_rec(id INTEGER) INTO foreign_table1_id;

连接是通过外部数据包装器“mydatawrapper”建立的是。。。我已经开始回答不带格式的问题,也许这就是为什么我有点错过了。前一段时间我不得不做dblink,而那个页面对我很有帮助,所以我回答说:)您是否尝试过“在mytable(c1,c2)中插入值(“| | ticketvar.c1 | | |”,“| | ticketvar.c2 | |”)返回tid?当然,如果c1和c2是整数,则返回tid。如果它们是字符串,则应在适当的位置添加“”。例如,“,”代替了“,”和“”,在这里你制动了字符串。是的,它确实起作用了,忘了结束这个问题。无论如何,谢谢你的帮助!