variables in ad hoc queries

Started by Iain Barnettover 16 years ago5 messagesgeneral
Jump to latest
#1Iain Barnett
iainspeed@gmail.com

If I have a function that returns an integer, how can I use the
following code outside of a function block?

declare
_myint int;

begin
_myint := myfunction( );
end;

or is it just not possible?

Iain

#2Merlin Moncure
mmoncure@gmail.com
In reply to: Iain Barnett (#1)
Re: variables in ad hoc queries

On Tue, Sep 29, 2009 at 8:06 AM, Iain Barnett <iainspeed@gmail.com> wrote:

If I have a function that returns an integer, how can I use the following
code outside of a function block?

declare
_myint int;

begin
_myint := myfunction( );
end;

you can...all postgresql functions can be used in queries:

select * from myfunction();

What you are probably bumping into is that previously to 8.4, plpgsql
functions could not be called the short way:
select myfunction();

If this is your problem, the workarounds are to adjust the query, wrap
it with an sql function, or upgrade to 8.4.

merlin

In reply to: Iain Barnett (#1)
Re: variables in ad hoc queries

On 29/09/2009 13:06, Iain Barnett wrote:

If I have a function that returns an integer, how can I use the
following code outside of a function block?

declare
_myint int;

begin
_myint := myfunction( );
end;

You can't use this code outside of a function - this just isn't valid
SQL. You can of course use your function -

select myfunction();

- though I'm sure you know that already.

What exactly are you trying to achieve?

Ray.

------------------------------------------------------------------
Raymond O'Donnell, Director of Music, Galway Cathedral, Ireland
rod@iol.ie
Galway Cathedral Recitals: http://www.galwaycathedral.org/recitals
------------------------------------------------------------------

#4Brian Modra
brian@zwartberg.com
In reply to: Iain Barnett (#1)
Re: variables in ad hoc queries

2009/9/29 Iain Barnett <iainspeed@gmail.com>:

If I have a function that returns an integer, how can I use the following
code outside of a function block?

declare
_myint int;

begin
_myint := myfunction( );
end;

select myfunction from myfunction();

or, you can use the function in SQLs wherever you'd usually use an integer

or is it just not possible?

Iain

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

--
Brian Modra Land line: +27 23 5411 462
Mobile: +27 79 69 77 082
5 Jan Louw Str, Prince Albert, 6930
Postal: P.O. Box 2, Prince Albert 6930
South Africa
http://www.zwartberg.com/

#5Iain Barnett
iainspeed@gmail.com
In reply to: Brian Modra (#4)
Re: variables in ad hoc queries

Sorry, in oversimplifying for clarity I was making it more unclear!

Whenever I write a function, I like to write a quick ad hoc test to
go with it in the comments. It means I can also test combinations of
functions together quickly, without having to build other functions
first, and gives anyone reading the function a quick idea of the type
of inputs/outputs they might see. I've mostly worked with SQL Server,
and with that I can write statements that might need to be within a
function in ad hoc fashion.

A common example is when I write an insert statement that returns the
primary key of the inserted row. I'd like to capture that in a
variable and run it through other functions. To be able to declare
variables outside a function would be helpful in this respect.

It's just a quick way to an easy test, in my view, but if it's not
possible then that's ok, I'll just write full blown test functions
from the start.

Regards,
Iain