如何在PostgreSQL中循环调用存储过程-创新互联
                                            今天就跟大家聊聊有关如何在PostgreSQL中循环调用存储过程,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

实现
create
 or replace function creatData() returns boolean as $BODY$
declare ii integer;
declare id1 integer;
declare id2 integer;
begin
 ii = 1;
 id1 = nextval('seq_table');
 id2 = nextval('seq_table');
FOR ii IN 1..50000 LOOP
insert
 into
 table1
 values(
 id1,
 10,
 10250,
 5001,
 '2017-08-07 14:00:00',
 '2017-08-07 15:00:00',
 id2,
 true,
 864,
 16950,
 0,
 0,
 0,
 null,
 20,
 null,
 18050,
 '2017-08-07 13:55:08',
 18051,
 '2017-08-07 13:57:28',
 false,
 401,
 10,
 null,
 null,
 null,
 'DA-HZ001000003',
 '2017-08-07 13:54:08',
 '2017-08-07 13:57:28',
 10251
 );
insert
 into
 table1
 values(
 id2,
 10,
 10251,
 5001,
 '2017-08-07 14:00:00',
 '2017-08-07 15:00:00',
 id1,
 true,
 864,
 16950,
 0,
 0,
 0,
 null,
 20,
 null,
 18050,
 '2017-08-07 13:55:08',
 18051,
 '2017-08-07 13:57:28',
 false,
 401,
 10,
 null,
 null,
 null,
 'DA-HZ001000003',
 '2017-08-07 13:54:08',
 '2017-08-07 13:57:28',
 10250
);
end LOOP;
return true;
end;
$BODY$ LANGUAGE plpgsql;问题
这样子插入只能插入一次, 因为取得序列值的地方在for循环的外面, id的值不会随着循环再赋值, 主键冲突.
办法
想到可以再对函数进行循环, 于是再写一个函数循环执行上一个函数, 去掉上个函数中的for 循环语句FOR i IN 1..500000 LOOP 和 end LOOP;
再写一个下面函数循环执行函数1
create or replace function loopCreate() returns void as $BODY$ begin for i in 1..50000 LOOP PERFORM creatData(); end LOOP; end; $BODY$ LANGUAGE 'plpgsql' VOLATILE;
执行函数
select * from loopCreate() as tab;
好了,完成,10万条数数据秒插, 2.1秒.
PS:CSDN的markdown编辑器真的很难用, 文字稍微长一点就卡, 而且换行经常自动调跳回上一行, 无奈, 现在都是直接在别的地方写好粘贴回来…
补充:postgresql 存储过程中遍历的一个小问题
问题
想实现这种功能,就是 for r in 后面的sql语句是一个变量,要把以下代码修改一下
"sqltext" = 'select "ID","ZONENAME" from "ZONE_INFO" where "ID"<>0'; for r in "sqltext" loop return next r; end loop;
解决方法:
sqltext = 'select "ID","ZONENAME" from "ZONE_INFO" where "ID" <>0'; for r in execute sqltext loop return next r; end loop;
看完上述内容,你们对如何在PostgreSQL中循环调用存储过程有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
网站题目:如何在PostgreSQL中循环调用存储过程-创新互联
浏览地址:http://www.scyingshan.cn/article/cejshs.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 