Question

I have a void plsql function:

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

I want to call this function from another plsql function, but inside a query like:

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

When I run the sproc i get:

ERROR: query has no destination for result data HINT: If you want to discard the results of a SELECT, use PERFORM instead.

Is it possible to call a void function as part of a select statement?

Was it helpful?

Solution

HINT: If you want to discard the results of a SELECT, use PERFORM instead.

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

PERFORM is the PL/PgSQL alternative for SELECT for when you want to throw the results away. It cannot be used outside PL/PgSQL. For more information, see the manual.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top