Re: Trying to avoid a simple temporary variable declaration in a pl/pgsql function

From: Charles Clavadetscher <clavadetscher(at)swisspug(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Trying to avoid a simple temporary variable declaration in a pl/pgsql function
Date: 2015-06-20 15:57:00
Message-ID: 55858D4C.3020907@swisspug.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello

The solution proposed by Tom works as long as you can make sure that
your SELECT statement in the function will return a single row with a
single column of type TEXT:

CREATE TABLE test (id INTEGER, what_goes_here TEXT);
INSERT INTO test values (1,'Text 1');
INSERT INTO test values (2,'Text 2');

CREATE FUNCTION test_func()
RETURNS text
LANGUAGE 'plpgsql'
AS $$
BEGIN
RETURN (SELECT what_goes_here FROM test LIMIT 1);
END;
$$;

SELECT * FROM test_func();
test_func
-----------
Text 1
(1 row)

No need for INTO.

Bye
Charles

On 6/20/2015 17:07, David G. Johnston wrote:
> On Sat, Jun 20, 2015 at 10:56 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us
> <mailto:tgl(at)sss(dot)pgh(dot)pa(dot)us>>wrote:
>
> "David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com
> <mailto:david(dot)g(dot)johnston(at)gmail(dot)com>> writes:
> > I know this could be written quite easily in sql but was
> wondering if it is
> > possible in pl/pgsql.
>
> > CREATE FUNCTION test_func()
> > RETURNS text
> > LANGUAGE 'plpgsql'
> > AS $$
> > BEGIN
> > SELECT 'text_to_return' INTO <what_goes_here?>; --with or
> without a cast
> > RETURN <what_goes_here?>;
> > END;
> > $$;
>
> > The goal is to return the value of text_to_return without
> declaring an
> > explicit variable to name in the INTO clause.
>
> INTO requires a declared variable as target.
>
> However, I'm wondering why you don't just use "RETURN expression"
> if this is all that will be in the function.
>
>
> ​ The use of SELECT is required and will likely have a CTE and a set
> of SQL CASE expressions as part of it.
> ​
> It isn't a problem to declare it myself but I thought I had read about
> there being an implicit variable name that could be used instead. I
> guess I mis-remembered...
>
> ​Thanks for the quick response.
>
> David J.
>
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Jerry Sievers 2015-06-20 16:12:50 Re: Trying to avoid a simple temporary variable declaration in a pl/pgsql function
Previous Message Jerry Sievers 2015-06-20 15:51:06 Re: Postgresql 9.2 has standby server lost data?