【发布时间】:2013-10-04 10:51:46
【问题描述】:
所以,我正在尝试创建一个程序来查找 我表中的特定行,将该行保存在结果中 返回,删除该行,然后返回结果。
我设法做的最好的事情是:
CREATE OR REPLACE FUNCTION sth(foo integer)
RETURNS TABLE(a integer, b integer, ... other fields) AS $$
DECLARE
to_delete_id integer;
BEGIN
SELECT id INTO to_delete_id FROM my_table WHERE sth_id = foo LIMIT 1;
RETURN QUERY SELECT * FROM my_table WHERE sth_id = foo LIMIT 1;
DELETE FROM my_table where id = to_delete_id;
END;
$$ LANGUAGE plpgsql;
如您所见,我有 2 个 SELECT 操作几乎做同样的事情(额外
高架)。有没有办法只拥有第二个SELECT 并设置to_delete_id
这样我以后可以删除该行吗?
【问题讨论】:
标签: sql postgresql select stored-procedures