【问题标题】:Postgres calling a void functionPostgres 调用 void 函数
【发布时间】:2014-04-02 07:18:30
【问题描述】:

我有一个无效的 plsql 函数:

CREATE OR REPLACE FUNCTION do_something(p_id BIGINT) 
RETURNS void
AS $$
BEGIN
   insert ....
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;

我想从另一个 plsql 函数调用这个函数,但是在一个查询中,比如:

SELECT  do_something(m.id) 
FROM    MyTable m
WHERE   m.IsActive;

当我运行sproc 时,我得到:

错误:查询没有结果数据的目的地提示:如果你想 丢弃 SELECT 的结果,改用 PERFORM。

是否可以在 select 语句中调用 void 函数?

【问题讨论】:

    标签: postgresql plpgsql postgresql-9.2


    【解决方案1】:

    提示:如果要丢弃 SELECT 的结果,请改用 PERFORM。

    PERFORM  do_something(m.id) 
    FROM    MyTable m
    WHERE   m.IsActive;
    

    PERFORMSELECT 的 PL/PgSQL 替代方案,当您想丢弃结果时。它不能在 PL/PgSQL 之外使用。有关详细信息,请参阅手册。

    【讨论】:

    • 也许值得一提,PERFORM 仅在 pl/pgsql 上下文中有效。
    • 是的,公平的。我通常会写更深入的答案,但这是一个“您是否真的阅读了错误消息/搜索错误”...
    • :-) 我确实阅读了错误并且我确实尝试了“PERFORM”......但我一定是把它弄乱了......因为在它不起作用之前......现在它确实...... .grrr ...抱歉浪费大家的时间。
    猜你喜欢
    • 2012-08-16
    • 2012-09-15
    • 2012-03-09
    • 2012-06-29
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多