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

Поиск
Список
Период
Сортировка
От Charles Clavadetscher
Тема Re: Trying to avoid a simple temporary variable declaration in a pl/pgsql function
Дата
Msg-id 55858D4C.3020907@swisspug.org
обсуждение исходный текст
Ответ на Re: Trying to avoid a simple temporary variable declaration in a pl/pgsql function  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список 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@sss.pgh.pa.us
> <mailto:tgl@sss.pgh.pa.us>>wrote:
>
>     "David G. Johnston" <david.g.johnston@gmail.com
>     <mailto:david.g.johnston@gmail.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.
>
>



В списке pgsql-general по дате отправления:

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: Trying to avoid a simple temporary variable declaration in a pl/pgsql function
Следующее
От: Jerry Sievers
Дата:
Сообщение: Re: Postgresql 9.2 has standby server lost data?