2009-09-28 21 views
0

我有一個非常有用的名字:has_useful_state(param)如何在PostgreSQL 8中重新使用函數名作爲輸出參數?

我有一個會返回一個SETOF RECORD這幫結果的第二個功能:

CREATE OR REPLACE FUNCTION set_of_useful_things(param TEXT, OUT has_useful_state) RETURNS SETOF RECORD AS $_$ 
BEGIN 
    SELECT some_key, COUNT(has_useful_state(some_key)) FROM .... 

無論如何,這裏是通向哪裏出軌。該函數,其中has_useful_state是迄今爲止都返回列名和提供它的功能最好的名字,但沒有對這樣的錯誤進行編譯:顯然,函數名被視爲

SELECT some_key, COUNT($1 (some_key)) FROM .... 

別名...所以我怎麼能避免這一點,仍然保持我有用的功能和列名稱?

回答

1

你也可以堅持有兩個同名的變量,但大多數時候我們不得不忍受彼此隱瞞的惡習。簡而言之,不,你不能,你必須改變其中的一個(我的猜測是你將犧牲一個參數)。

+0

真的嗎?你的意思是說......'編程語言'甚至沒有上下文相關符號表的概念? WTF?這就像試圖用C語言專門編程一樣。垃圾。 我希望別人有一個解決方案,但如果沒有,我會回來撞你的。 – 2009-09-28 20:58:40

+0

嗯,是的,不是'$ 1'暗示了別名處理的宏觀擴展性質? – 2009-09-28 21:03:55

+0

你可以看到自己有多少名字空間;-) http://git.postgresql.org/gitweb?p=postgresql.git;a=blob;f=src/pl/plpgsql/src/gram.y; H = af398f28ba43c2c32e13f584d1a0942b68f598e3; HB = HEAD#L377 – 2009-09-28 21:14:28

相關問題