Возврат одного поля из функции postgresql с псевдонимом?

Как я могу вернуть один столбец из функции postgresql, но также и псевдоним столбца?

Проблема в следующем: в документации http://www.postgresql.org/docs/9.3/static/xfunc-sql.html приведен следующий пример.

CREATE FUNCTION one() RETURNS integer AS $$
    SELECT 1 AS result;
$$ LANGUAGE SQL;

Это возвращает поле, названное в честь функции «один». Мне интересно, есть ли способ назвать возвращаемое поле чем-то еще внутри функции?

Я попытался использовать конструкцию RETURNS TABLE, но при этом происходит странная вещь. Если вы используете его только с одним полем, после развертывания оно будет преобразовано в простой RETURNS VARCHAR или любой другой используемый тип. Это не идеально для некоторых вещей, таких как резервное копирование/восстановление БД или исправления/модификации функции.

У кого-нибудь есть идеи?

заранее спасибо


person Bat Masterson    schedule 09.10.2014    source источник
comment
Почему вы хотите? Это кажется действительно странным требованием... не могли бы вы подробнее объяснить цель этого? Когда вы говорите , он будет преобразован в простой RETURNS VARCHAR или любой другой используемый тип после развертывания, можете ли вы уточнить?   -  person Craig Ringer    schedule 10.10.2014


Ответы (1)


Невозможно указать псевдоним скалярного возвращаемого значения внутри функции.

RETURNS TABLE работает, но только для SELECT * FROM my_function(). например.:

CREATE OR REPLACE FUNCTION one() RETURNS TABLE(colname integer) AS $$
    SELECT 1 AS result;
$$ LANGUAGE SQL;

SELECT * FROM one();
 colname 
---------
       1
 (1 row)
person Craig Ringer    schedule 10.10.2014