首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从pl/python函数调用的python模块中,如何获取返回值?

从pl/python函数调用的python模块中,如何获取返回值?
EN

Stack Overflow用户
提问于 2011-09-22 00:49:58
回答 2查看 2K关注 0票数 2

这个函数调用不会返回'result‘有什么原因吗?

代码语言:javascript
复制
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 ============的===内容

代码语言:javascript
复制
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())
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-22 20:26:15

@ed。实际上并不需要返回语法而不是OUT,但是您的建议让我找到了答案。是的,我觉得自己真的是个傀儡。这就是让别人评论自己工作的美妙之处。

添加了返回结果后,事情就很好地解决了。我在这里做的关键假设是,result =语法实际上并没有在调用函数的作用域内完成返回。多!

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION myfunction (input int, OUT result int) AS $$

result = mymodule.object(input,plpy)
plpy.info(" ========= EXTRA-module result: ===",result)
# This was the key bit:
return result

$$ LANGUAGE plpythonu;
票数 1
EN

Stack Overflow用户

发布于 2011-09-22 01:17:10

我不太熟悉plpython,但是如果它抛出了一个错误,并且没有打印出来或者在链上传递,你永远都不会知道。

我不知道您是否正在使用命令行进行测试,但请尝试在except块中放入一条print语句,看看它是否只是出错而不是返回。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7503572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档