在PostgreSQL中向数组添加元素时,是否可以为元素指定索引(使用某个计数器)?
例如,我有来自Oracle PL / SQL的代码,我想在PostgreSQL中编写它:
invoice_list.EXTEND;
invoice_list(counter):= cfp_cur.invoice_no; --adding some invoices from a loop to a text array
amount_list.EXTEND;
amount_list(counter) := inv_amount; --adding some amounts to a number array
counter := counter + 1; --increasing counter
答案 0 :(得分:1)
PostgreSQL没有像Oracle那样的EXTEND
方法。但是,PostgreSQL可以通过将数组元素分配到当前数组长度的末尾来自动扩展1维数组。
在您的示例中,这变得非常简单:
CREATE FUNCTION some_function () RETURNS something AS $$
DECLARE
invoice_list text[];
amount_list float8[];
BEGIN
-- Do something
...
FOR counter IN 1 ... 10 LOOP
-- get current values for cfp_cur.invoice_no and inv_amount
invoice_list[counter] := cfp_cur.invoice_no;
amount_list[counter] := inv_amount;
END LOOP;
-- Do something with the arrays
...
RETURN;
END;