[英]Syntax error near FOR LOOP in stored procedure Postgres
下面是我要創建的存儲過程。 我正在將表數據轉換為 json 並循環我創建的 JSON。 但是我這樣做時遇到了問題。
CREATE OR REPLACE FUNCTION file_compare()
RETURNS text
LANGUAGE 'plpgsql'
COST 100
VOLATILE
AS $BODY$
declare
fpo_data jsonb;
loopupto INTEGER := 0;
begin
select json_agg(("fpdata"))::jsonb
FROM (
SELECT "fo_data" as fpdata
from fpo
limit 100
) t INTO "fpo_data";
FOR i IN "fpo_data"
LOOP
RAISE NOTICE 'output from space %', i;
END LOOP;
return fpo_data;
end;
$BODY$;
我收到以下錯誤
ERROR: syntax error at or near ""fpo_data""
LINE 27: FOR i IN "fpo_data"
問題是什么? 請幫忙!!
您忘記聲明i
,有一些無用的"
並且您正在嘗試迭代 jsonb 變量。
假設fpo_data
存儲了一個 jsonb 數組,試試這個:
CREATE OR REPLACE FUNCTION file_compare()
RETURNS TEXT LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
DECLARE
fpo_data jsonb;
i JSONB;
BEGIN
SELECT json_agg((fpdata))::jsonb
FROM (SELECT fo_data AS fpdata
FROM fpo LIMIT 100
) t INTO fpo_data;
FOR i IN SELECT * FROM jsonb_array_elements(fpo_data) LOOP
RAISE NOTICE 'output from space %', i;
END LOOP;
RETURN fpo_data;
END;
$BODY$;
編輯:要僅檢索 raise notice 語句中的元素bene_first_name
,只需執行以下操作:
RAISE NOTICE 'output from space %', (i->>0)::JSONB->'bene_first_name';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.