2009-09-28 22 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

相关问题