Re: Why select * from function doesn't work when function - Mailing list pgsql-hackers

From Nigel J. Andrews
Subject Re: Why select * from function doesn't work when function
Date
Msg-id Pine.LNX.4.21.0307222024540.31066-100000@ponder.fairway2k.co.uk
Whole thread Raw
In response to Why select * from function doesn't work when function has return type void??  ("Francisco Figueiredo Jr." <fxjrlists@yahoo.com.br>)
Responses Re: Why select * from function doesn't work when function  ("Francisco Figueiredo Jr." <fxjrlists@yahoo.com.br>)
List pgsql-hackers
On Tue, 22 Jul 2003, Francisco Figueiredo Jr. wrote:

> 
> Hi all,
> 
> I would like to know why does calling a function with select * from 
> function doesn't work when its return type is set to void.
> 
> I'm asking this because I have a code which uses this syntax to add 
> support for returning resultsets from functions. This way, regardless 
> the function returns a resultset or a single value, I could do select * 
> from function and it works very well.
> 
> The problem appears when the function has its returns type to void.
> I get the following error message:
> 
> npgsql_tests=> select * from funcF();
> ERROR:  function funcf() in FROM has unsupported return type
> ERROR:  function funcf() in FROM has unsupported return type
> 
> 
> where funcF is defined as:
> 
> npgsql_tests=> create function funcF() returns void as 'delete from 
> tablea where field_serial > 5' language 'sql';
> 
> CREATE FUNCTION
> 
> But it does work if I call it as:
> 
> select funcF();
> 
> 
> 
> I'd like to know if would be possible to change this behaviour to return 
> an empty result set with a null value. This way, there would be 
> consistency in calling all functions regardless of its return type with 
> select * from function.


Try returning an integer but returning a null for that integer...on the other
hand I see you're using sql as the language and I don't know how that would
work.

Have you looked at plpgsql? Perhaps that is acceptable for you, in which case:

create function  funcF ( ) returns integer as 'begin  delete from blah;  return null;end;
' as language 'plpgsql';

select * from funcF();


I believe that would work but don't quote me :)


--
Nigel J. Andrews





pgsql-hackers by date:

Previous
From: "Nigel J. Andrews"
Date:
Subject: Re: suggestions to improve postgresql suitability for
Next
From: "Francisco Figueiredo Jr."
Date:
Subject: Re: Why select * from function doesn't work when function