没有CREATE FUNCTION的某些代码的别名?

时间:2015-02-24 21:00:35

标签: sql postgresql

我有一个查询,重复使用相同的代码片段,我称之为foo(),就好像该函数存在一样:

SELECT
    foo(a),
    BUILTIN(foo(a))
FROM 
    foobar
GROUP BY
    foo(a)
HAVING
    BUILTIN(foo(a)) > bar()
ORDER BY
    foo(a)
;

通常情况下,我很久以前就已经创建了这个函数foo - 我在编辑器中实际看到的是内置函数的混乱嵌套几次。

但是 - 我不能CREATE我的好foo,因为我只拥有USAGE权限。

我是否有办法创建某种“别名”,这样每当foo时,就会执行更长的功能;但这当然不适用于任何其他数据库用户?

1 个答案:

答案 0 :(得分:2)

对于示例,您在子查询中发布了计算foo(a)

select foo_a, builtin(foo_a)
from (
    select foo(a) as foo_a
    from foobar
) s
group by 1
having builtin(foo_a) > bar()
order by 1
;