2011-09-22 27 views
0

我最近傾向於使用PostgreSQL,並試圖製作ListAggregation函數,因爲here唯一的區別是我試圖用CONCAT代替TextCat 。 我的功能是爲下如何在使用PostgreSQL製作聚合函數時在sfunc參數中使用Concat函數

CREATE AGGREGATE ListAggregation(
     basetype = Text, 
     sfunc  = Concat, 
     stype  = Text, 
     initcond = '' 
); 

它拋出錯誤

ERROR: function concat(text, text) does not exist 

********** Error ********** 

ERROR: function concat(text, text) does not exist 
SQL state: 42883 

我在做什麼錯?請幫助

NB〜我甚至看了給出here

的例子

謝謝

+0

確實沒有'CONCAT(文本,文本)'函數。 'textcat(文本,文本)'有什麼問題? –

回答

1

有趣的是,wh你在做什麼?已經有PostgreSQL中9.0+一個string_agg()聚合函數...

+0

因爲我正在學習(這是我的第二天)PostgreSQL,我正在嘗試一些經驗。只是想知道我正在犯什麼錯誤,我該如何糾正這一點。我還知道,textcat精確地接受兩個參數,而concat接受多個參數。所以如何讓它工作。 – lightswitchlover

0

您應該創建狀態改變功能sfunc實現與簽名的集合:sfunc(狀態值)--->下一狀態

-- sfunc: 
CREATE OR REPLACE FUNCTION concat(text, text) 
RETURNS text 
LANGUAGE SQL 
AS $$ 
    SELECT $1||$2; 
$$; 

-- Aggregate: 
CREATE AGGREGATE ListAggregation(
     basetype = text, 
     sfunc  = concat, 
     stype  = text, 
     initcond = '' 
); 

-- Testing: 
WITH test(v) AS (VALUES 
    ('AAAA'), 
    ('BBBB'), 
    ('1111'), 
    ('2222')) 
SELECT ListAggregation(v) FROM test; 
相關問題