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.0307250010510.22978-100000@ponder.fairway2k.co.uk
Whole thread Raw
In response to Re: Why select * from function doesn't work when function  ("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 Thu, 24 Jul 2003, Francisco Figueiredo Jr. wrote:

> Nigel J. Andrews wrote:
> 
> > On Tue, 22 Jul 2003, Francisco Figueiredo Jr. wrote:
> > 
> > 
> >>>How's this for an alternative if you really don't want any rows returned:
> >>>
> >>>create function fincF ( )  returns setof integer as '
> >>> begin
> >>>   delete from blah;
> >>>   return;
> >>> end;
> >>>' language 'plpgsql';
> >>>
> >>>
> >>
> >>This works, but what I really want is not to return any rows. I mean, 
> >>the problem is not return null, but the error I get if I select * from 
> >>voidfunction.
> >>
> >>I just wanted void functions behave like others when called as select * 
> >>from voidfunction  So I dont have to do select voidfunction. :)
> > 
> > 
> > But that last does exactly that. Doesn't even return a null. Give it a quick
> > go, skip the delete statement obviously, and see. You'll get something like:
> > 
> >    ?
> > -------
> > 
> > (0 rows)
> > 
> 
> 
> Uhmmm, I think I didn't make myself clear. What I mean by void function 
> wasn't a function which just doesn't return anything. What I meant is a 
> function created like this:
> 
> create function voidfunction returns *void* as [...]

I knew what you meant but why the insistence on the void return type? All it's
saying is that there isn't any interpretation that can be applied to anything
that may (or may not) be returned from it so what are you trying to gain by
forcing the void type when you're forced into ignoring the result anyway?

> 
> The problem to me is the void in the returns ;)
> 
> If you create a function with the returns void above you'll see that if 
> you do select * from voidfunction it gives you the error I said. But it 
> works with select voidfunction.

Well don't create the function as returning void :)

> 
> I just wanted it to work with select * from voidfunction too. :)
> 

I think I did most of mine as returning integer type and the value 1 (just for
something to return).


Nigel Andrews




pgsql-hackers by date:

Previous
From: Sailesh Krishnamurthy
Date:
Subject: Re: this is in plain text (row level locks)
Next
From: Joe Conway
Date:
Subject: best way to determine start of new statement within a function?