ofSELECT
を返すクエリを作成しようとしています。RECORD
ROWS
RECORD を取得して単一の ROW を返すことができるため、問題の半分を解決しました。しかし、ROWS のセットを返す場合はどうでしょうか?
たとえば、次のクエリを見てください。
SELECT * FROM
RECORD(
(
ROW(1::integer, 'Florida'::character varying)
)
) AS tbl (id integer, state character varying)
私は私が予想するものを手に入れます:
+==============+
| id | state |
+====+=========+
| 1 | Florida |
+----+---------+
ただし、RECORD に行を 1 つ追加しようとすると、ここで問題が発生します。
SELECT * FROM
RECORD(
(
ROW(1::integer, 'Florida'::character varying),
ROW(2::integer, 'Georgia'::character varying)
)
) AS tbl (id integer, state character varying)
次のような結果が予想されます。
+==============+
| id | state |
+====+=========+
| 1 | Florida |
+----+---------+
| 2 | Georgia |
+----+---------+
ただし、代わりに次の PostgreSQL エラーが表示されます。
********** Error **********
ERROR: function return row and query-specified return row do not match
SQL state: 42804
Detail: Returned type record at ordinal position 1, but query expects integer.
ここで何が欠けているのですか?何か些細なことですか、それとも私はこれに完全に間違っていますか? ポインタや提案は大歓迎です。ありがとうございます!
関連するメモ: これがストアド プロシージャで行われる場合、 を返すことができることは理解していますがSETOF
、このユース ケースでは、ストアド プロシージャを使用せずに、クエリを介して直接 ROWS の RECORD を返すことに関心があります。