2014-10-09 16 views
0

如何從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; 

這將返回一個以函數「one」命名的字段。我想知道是否有任何方法來命名返回的字段中的其他功能?

我試過使用RETURNS TABLE構造,但是一個奇怪的事情發生在這個。如果僅將其用於單個字段,則會將其轉換爲簡單的RETURNS VARCHAR或部署後使用的任何類型。這對於某些事情並不理想,比如數據庫備份/恢復或對功能的錯誤修正/修改。

有沒有人有任何想法?

在此先感謝

+0

你爲什麼想要?這似乎是一個非常奇怪的要求......你能解釋更多關於這樣做的目的嗎?當你說*「它會被轉換成一個簡單的RETURNS VARCHAR,或者無論使用哪種類型,一旦部署」*你能更具體嗎? – 2014-10-10 01:40:21

回答

0

這是不可能的指定函數內的一個標量返回值的別名。

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)