我刚刚开始使用postgreSQL(我有MSSQL和MySQL的历史记录)并且有关于别名的问题。如果我在函数中声明了以下SQL:
RETURN QUERY SELECT "Table"."col1" AS "Column 1",
"Table"."col2" AS "Column 2"
FROM "Table";
突出显示并单独运行可以提供我所期望的内容:
Column 1 | Column 2
------------------------
Contents | Contents
of | of
col1 | col2
但是从外部调用此函数似乎忽略了设置的别名:
SELECT * FROM "f_Function"();
获取:
col1 | col2
------------------------
Contents | Contents
of | of
col2 | col2
我尝试更改函数的返回类型定义,以防它们具有更高的父进程命名优先级:
... RETURNS TABLE (col1 integer AS "Column 1", col2 integer AS "Column 2") ...
但这在语法上是错误的。
正如我所说,我刚刚开始使用postgreSQL,所以可能会遗漏一些显而易见的东西,但我似乎无法找到任何有关这种特定情况的帮助。
要清楚,我希望能够调用该函数并使列别名出现在返回的表中。
有什么想法吗?
编辑:Yuri Levinsky的解决方案
... RETURNS TABLE ("Column 1" integer, "Column 2" integer) ...
使用
RETURN QUERY SELECT "Table"."col1",
"Table"."col2"
FROM "Table";
返回表格:
Column 1 | Column 2
------------------------
Contents | Contents
of | of
col1 | col2
答案 0 :(得分:1)
请使用以下示例: RETURNS TABLE(dstring字符变化,......) 从function_name中选择*;
您将在函数声明中看到列名称dstring,...。您不需要使用别名:只需按名称命名即可。