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を使い始めたばかりなので、明らかな何かが欠けているかもしれませんが、この特定の状況に対する助けを見つけることができないようです.

明確にするために、関数を呼び出して、返されたテーブルに列のエイリアスを表示できるようにしたいと考えています。

何か案は?

編集:ユーリ・レビンスキーの解決策

... 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 Various, ...) select * from your function_name;

関数宣言で指定された列名 dstring,... が表示されます。エイリアスを使用する必要はありません。好きなように名前を付けてください。

于 2013-08-07T10:44:28.467 に答える