Thread: Running a PL/pgSQL function

Running a PL/pgSQL function

From
Christophe
Date:
I'm startled that I've never done this before, but...  I have a PL/
pgSQL function that takes no arguments, returns VOID, and has a bunch
of side effects on the database.  The correct way of invoking this
function is:

    SELECT my_func();

... yes?  Thanks; it seems to work fine, but using SELECT here is
causing some part of my brain to scream "counter-intuitive."

Re: Running a PL/pgSQL function

From
Adrian Klaver
Date:
On Monday 11 August 2008 4:24:17 pm Christophe wrote:
> I'm startled that I've never done this before, but...  I have a PL/
> pgSQL function that takes no arguments, returns VOID, and has a bunch
> of side effects on the database.  The correct way of invoking this
> function is:
>
>     SELECT my_func();
>
> ... yes?  Thanks; it seems to work fine, but using SELECT here is
> causing some part of my brain to scream "counter-intuitive."

Similar to doing:

test=# SELECT 1+1;
 ?column?
----------
        2
(1 row)



--
Adrian Klaver
aklaver@comcast.net

Re: Running a PL/pgSQL function

From
Tom Lane
Date:
Christophe <xof@thebuild.com> writes:
> I'm startled that I've never done this before, but...  I have a PL/
> pgSQL function that takes no arguments, returns VOID, and has a bunch
> of side effects on the database.  The correct way of invoking this
> function is:
>     SELECT my_func();
> ... yes?  Thanks; it seems to work fine, but using SELECT here is
> causing some part of my brain to scream "counter-intuitive."

Yeah, it is a little weird but it works fine.  We treat VOID as a
more-or-less-real datatype that has only one value, an empty string...

            regards, tom lane

Re: Running a PL/pgSQL function

From
"Scott Marlowe"
Date:
On Mon, Aug 11, 2008 at 6:03 PM, Adrian Klaver <aklaver@comcast.net> wrote:
> On Monday 11 August 2008 4:24:17 pm Christophe wrote:
>> I'm startled that I've never done this before, but...  I have a PL/
>> pgSQL function that takes no arguments, returns VOID, and has a bunch
>> of side effects on the database.  The correct way of invoking this
>> function is:
>>
>>       SELECT my_func();
>>
>> ... yes?  Thanks; it seems to work fine, but using SELECT here is
>> causing some part of my brain to scream "counter-intuitive."
>
> Similar to doing:
>
> test=# SELECT 1+1;
>  ?column?
> ----------
>        2

Hey, it beats select 1+1 from dual!