1
我在嘗試寫一個SELECT
查詢,它返回RECORD
的ROWS
。在PostgreSQL中返回一行記錄
我解決了一半的問題,因爲我可以得到一個記錄返回一個單行。但是如何返回一組ROWS?
以下面的查詢,例如:
SELECT * FROM
RECORD(
(
ROW(1::integer, 'Florida'::character varying)
)
) AS tbl (id integer, state character varying)
我得到了我預期:
+==============+
| id | state |
+====+=========+
| 1 | Florida |
+----+---------+
然而,當我試圖將一個附加行添加的記錄,這是我遇到的問題:
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
,但對於此用例,我有興趣直接通過查詢返回RECORD的ROWS,而無需使用的存儲過程。
我相信這實際上覆蓋了我的用例!也許我對RECORDs的工作原理有誤解,但我仍然非常好奇如何利用ROWs。非常感謝您的時間。 :) –
@JoshuaBurns:實際上我認爲你不能在PL/pgSQL之外使用'RECORD',但我不完全確定。但是'RECORD'總是代表一個*單*行(記錄)。所以我不認爲這會以任何方式工作。 –
'VALUES'構造是完成此操作的正確方法。你其實不需要'WITH'或'SELECT'; 'VALUES'是一個有效的獨立查詢。 –