Postgres存储的proc delete语句没有被执行

时间:2018-03-17 14:52:07

标签: sql postgresql plpgsql sql-delete sql-function

我有一个看起来像这样的存储过程:

p[1] == np.interp(p[0],x,y)

我得到了我想要的结果(来自返回查询语句),但最后的删除语句没有被执行,我用它来清理我的临时表。我怎样才能确保执行此操作?

2 个答案:

答案 0 :(得分:0)

您可以使用:

return query 

WITH cte AS (
   delete from _contact_index_tmp tmp      -- clear first
   where tmp.query_id = _id
   returning *                             -- return deleted data
)
select c.* 
from cte tmp 
left join contact c
  on tmp.guid = c.contact_guid;

答案 1 :(得分:0)

当你在函数中“返回”某些东西时,它会结束该函数,因此不会执行剩余的代码。 您需要将要返回的数据保存在临时变量中,删除数据,然后将其返回。