Nigel J. Andrews wrote:
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 '
delete from blah;
' 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
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:
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?
Oh, good. I thought I was being a little confused and could be leading
to some misunderstand. :)
I was faced by this when I received a bug report on Npgsql
about functions with void result wasn't being able to execute.
The problem is that internally, to get support of returning resultsets
from function calls, I was calling all functions with select * from
function. As I could call it this way regardless the function returned
just a single value or a resultset. I wasn't aware of the void type and
as Tom Lane also said now, other pseudotypes. So, I thought it was just
the void type which had this problem, and I was asking about why it
would behave differently from other types. I thougth it could be some
missing type, and would be a easy fix. But now I see it isn't so simple :)
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).
Yeah, this also would work.
Thanks Nigel for all your feedback.
Francisco Figueiredo Jr.
"My grandfather once told me that there are two
kinds of people: those
who work and those who take the credit. He told me
to try to be in the
first group; there was less competition there."
- Indira Gandhi