1

我才刚刚开始使用 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
4

1 回答 1

1

请使用以下示例: RETURNS TABLE (dstring character varying, ...) select * from your function_name;

您将看到列名 dstring,... 与函数声明中指定的一样。您不需要使用别名:只需按您的意愿命名即可。

于 2013-08-07T10:44:28.467 回答