CREATE OR REPLACE FUNCTION fnMyFunction(recipients recipient[]) ...
FOREACH v_recipient IN ARRAY recipients
LOOP
v_total := v_total + v_recipient.amount;
INSERT INTO tmp_recipients(id, amount)
VALUES(v_recipient.id, v_recipient.amount::numeric(10,2));
END LOOP;
...
這個工作在開發環境很好,但只是發現了釋放的環境是8.4這似乎不支持foreach構造。我希望有人可以通過數組參數集並使用數組中的值以類似的方式揭示循環的替代實現,以避免完整的重構。遍歷數組參數WITHOUT的foreach
我收到的錯誤信息是:
ERROR: syntax error at or near "FOREACH" SQL state: 42601 Context: SQL statement in PL/PgSQL function "fnMyFunction" near line ##
的DB環境是一個共享的主機上,所以我必須對平臺的升級沒有選項。
我標記了postgres 9.1和8.4,因爲該函數在9.x中正常工作,但在8.4上失敗。
因此,它看起來像這樣工作,不幸的是我沒有找到一個不明確的解釋。現在的問題是我似乎獲得了v_recipient元素中的第一項,但不是第二項。收件人元素是基於兩個字段的id和金額我假設結構看起來像這樣︰{{1,1.00},{2,1.00}} – tafaju
剛剛添加x(attr1,attr2)..謝謝克雷格! – tafaju
@tafaju鏈接到「unnest」文檔。 –