【发布时间】:2015-09-28 01:15:15
【问题描述】:
我在一个函数中初始化了两个数组,一个用于数字(金额列表),另一个用于文本(发票列表)。我想从这个函数中调用另一个函数并将这两个数组作为参数传递。
我可以这样调用函数,一切正常:
select function_2('{110011-0115-7}'::text[], '{100}'::numeric[])
但是当我想发送一个包含文本数组的变量时,数组似乎是空的:
select function_2(ARRAY[invoice_list], ARRAY[amount_list]);
函数定义:
CREATE OR REPLACE FUNCTION function_1(OUT out_code1 integer
, OUT out_message1 text)
RETURNS RECORD AS
$BODY$
DECLARE
counter numeric;
inv_cur record;
invoice_list text[];
amount_list numeric[];
BEGIN
FOR inv_cur IN
SELECT "ID", "AMOUNT"
FROM "INVOICE"
WHERE "ACCOUNT_ID" = in_account
LOOP
--Adding invoices to invoice array
invoice_list[counter] := inv_cur."ID";
--Adding amounts to amount array
amount_list[counter] := inv_cur."AMOUNT";
--Increasing counter for array indexes
counter := counter + 1;
END LOOP;
--Caling other function
SELECT * FROM function_2(ARRAY[invoice_list], ARRAY[amount_list]);
END
$BODY$
LANGUAGE plpgsql VOLATILE
其他函数定义:
CREATE OR REPLACE FUNCTION function_2(in_invoices text[]
, in_amounts numeric[]) ...
【问题讨论】:
标签: arrays postgresql parameter-passing plpgsql stored-functions