我正在greenplum中创建一个plpython函数。for plpy.prepare("INSERT INTO ....")失败并返回错误:
ERROR: plpy.SPIError: function cannot execute on segment because it issues a non-SELECT statement (plpython.c:4656) (seg4 slice1 den-gp5-seg03:40000 pid=119213) (cdbdisp.c:1322)
plpython函数中不允许插入吗?我在文档中看不到太多关于插入的帮助。greenplum plpython doc
发布于 2018-08-18 22:23:06
您可以使用plpy.execute("INSERT INTO ....")而不是plpy.prepare("INSERT INTO ....")。
prepared statement使用plpy.prepare()。如果您想使用它,请参考下面的示例。
postgres=# create table your_table (yourstr char(2), yournum int);
CREATE TABLE
postgres=# do $$
postgres$# plan = plpy.prepare("insert into your_table values($1,$2)", ["text", "int"]);
postgres$# plpy.execute(plan, ["Gx", 7]);
postgres$# $$ language plpython3u;
DO
postgres=# select * from your_table;
yourstr | yournum
---------+---------
Gx | 7
(1 row)
postgres=# 发布于 2018-06-30 12:52:04
我不确定insert是否可以在这里工作;将insert语句放在gp函数中,然后从plpython func中触发"select my_func(arg1,arg2)“
https://stackoverflow.com/questions/51095563
复制相似问题