Re: Why select * from function doesn't work when function

From: "Nigel J(dot) Andrews" <nandrews(at)investsystems(dot)co(dot)uk>
To: "Francisco Figueiredo Jr(dot)" <fxjrlists(at)yahoo(dot)com(dot)br>
Cc: PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org>
Subject: Re: Why select * from function doesn't work when function
Date: 2003-07-24 23:19:48
Message-ID: Pine.LNX.4.21.0307250010510.22978-100000@ponder.fairway2k.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Joe Conway 2003-07-24 23:41:39 best way to determine start of new statement within a function?
Previous Message Sailesh Krishnamurthy 2003-07-24 23:00:06 Re: this is in plain text (row level locks)