这个函数调用不会返回“结果”有什么原因吗?
CREATE OR REPLACE FUNCTION myfunction (input int, OUT result int) AS $$
result = mymodule.object(input,plpy)
plpy.info(" ========= EXTRA-module result: ===",result)
$$ LANGUAGE plpythonu;
=== mymodule 的内容 ============
def object(input,plpy):
import StringIO
try:
plan = plpy.prepare("INSERT INTO file VALUES (nextval('primary_sequence'),$1) RETURNING primary_key", ["integer"] )
except:
plpy.error(traceback.format_exc())
try:
rv = plpy.execute(plan, [ input ])
result = rv[0]["primary_key"]
plpy.info(" ========= INTRA-module result: ===",result)
return result
except:
plpy.error(traceback.format_exc())
最佳答案
我不太熟悉 plpython,但如果它抛出一个错误并且没有被打印出来或进一步向上传递,你永远不会知道。
我不知道您是否正在使用命令行进行测试,但请尝试在您的 except block 中放置一个打印语句,看看它是否只是出错而不是返回。
关于python - 从 pl/python 函数调用的 python 模块,如何获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7503572/