1.编写SQL脚本,插入到main_history表
1.1 创建表
CREATE TABLE main_history (
amount int4 NULL,
"content" varchar NULL,
main_id int4 NULL
);
1.2 批量插入
--_configList 使用 “_” 前缀来标识变量,用于区分sql中的字段
CREATE OR REPLACE FUNCTION batchInsert(_configList varchar[][], _main_id int) RETURNS void AS $$
DECLARE
_config varchar[];
_content varchar;
_amount int;
BEGIN
--获取二维数组的每个一维数组
FOREACH _config SLICE 1 IN ARRAY (_configList) LOOP
_content := _config[1];
_amount := _config[2];
--把变量输出到控制台
RAISE NOTICE 'config = %, content = %, amount = % main_id = %', _config, _content, _amount, _main_id;
--用变量拼接sql语句并且实际运行在server上
INSERT INTO main_history (amount, content, main_id) VALUES (_amount, _content, _main_id);
END LOOP;
END;
$$ LANGUAGE plpgsql;
--使用函数
select batchInsert(ARRAY[['ccontent1', '1'], ['content2', '2']], 1);
--删除函数
drop function batchInsert;
2. 函数说明
2.1 声明数组
声明的时候可以不额外区分一维、二维数组
_configList varchar[][] 和 _configList varchar[] 是一样的
2.2 数组赋值
声明为varchar后,赋值时也要是varchar类型。
_configList varchar[][] := (ARRAY[[‘ccontent1’, ‘1’], [‘content2’, ‘2’]]);
2.3 数组遍历
二维数组的遍历
–_configList 由外部传入, 而FOREACH SLICE IN ARRAY都是关键字
FOREACH _config SLICE 1 IN ARRAY (_configList) LOOP
_content := _config[1];
_amount := _config[2];
END LOOP;