0
我有一個SELECT
語句返回一個列表:(PostgreSQL的)如何根據文本參數創建一個函數,並返回一個列表
SELECT "db"."accounts"."account" as account
FROM db.accounts
WHERE db.accounts.level = 'Level 4' AND db.accounts.report = 'Report A'
截止報告可以是報告A或報告B,我想創建一個用戶選擇哪個報告的函數,如:get_account('Report A')。
我已經試過什麼:
CREATE TYPE get_accounts_results AS ARRAY[];
CREATE OR REPLACE FUNCTION get_accounts(report TEXT) RETURNS get_accounts_results AS
$$
SELECT "db"."accounts"."account" as account
FROM db.accounts
WHERE db.accounts.level = 'Level 4' AND db.accounts.report = $1
$$
LANGUAGE SQL;
SELECT get_accounts('Report A') AS report_account;
這讓我回只值1的時候,其實我需要n
值 - 值的這個名單的數量是動態的。可能被創建的類型是錯誤的,但在這種情況下我沒有找到任何有意義的東西。
我的問題是:如何調整此查詢以獲得列表中創建的函數的結果?
(PS:我的最終目標是能夠通過此列表迭代進行查詢動態地將查詢結果的物化視圖)
謝謝您的回答,但我仍然得到結果只有一個,不知道爲什麼... –
@CaioCarvalho:如果你定義和使用的功能,因爲我已經證明,只有解釋是隻有一行與表中的條件匹配 –
不知道到底發生了什麼,但似乎Postgres並沒有取代該功能。它在我DROP FUNCTION get_account(文本)'時運行,然後再次運行代碼。非常感謝。 –