我正在嘗試撰寫一個非常簡單的 pgsql 陳述句來回圈遍歷一個簡單的狀態縮寫陣列。
CREATE OR REPLACE FUNCTION my_schema.showState()
RETURNS text AS
$$
DECLARE
my_array text[] := '["az","al", "ak", "ar"]'
BEGIN
FOREACH state IN my_array
LOOP
RETURN SELECT format('%s', state);
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT * FROM showState();
我正在使用 PostgresSQL 版本 11 。我不斷收到錯誤ERROR: syntax error at or near "BEGIN"我想在這里看到的輸出現在只是看到列印在結果視窗中的狀態縮寫。像這樣:

我在這里做錯了什么?
uj5u.com熱心網友回復:
- 之后有一個
;缺失my_array text[] := '["az","al", "ak", "ar"]'。 '["az","al", "ak", "ar"]'不是有效的陣列文字。- 如果你想要一個集合回傳函式,你需要將它的回傳型別宣告為 a
SETOF。 - 在
ARRAY關鍵字中缺少FOREACH的頭。 state必須宣告。- 您需要使用
RETURN NEXT ...將值推入要回傳的集合中。 format()在這里毫無意義,它沒有有效地做任何事情。
所有這些都得到了糾正,你會得到一些類似的東西:
CREATE
OR REPLACE FUNCTION showstate()
RETURNS SETOF text
AS
$$
DECLARE
my_array text[] := ARRAY['az',
'al',
'ak',
'ar'];
state text;
BEGIN
FOREACH state IN ARRAY my_array
LOOP
RETURN NEXT state;
END LOOP;
END;
$$
LANGUAGE plpgsql;
資料庫<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/391467.html
標籤:PostgreSQL的 循环 foreach 格式
