在PostgreSQL中向索引添加带索引的元素

时间:2015-07-06 13:07:03

标签: arrays postgresql

在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

1 个答案:

答案 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;