亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费

PostgreSQL存儲過(guò)程循環(huán)調用方式
發(fā)布時(shí)間:2026-05-05 04:35:30

這篇文章主要介紹了PostgreSQL存儲過(guò)程循環(huán)調用方式,存儲具有很好的過(guò)程參考價(jià)值,希望對大家有所幫助。循環(huán)一起跟隨(′▽?zhuān)?)小編過(guò)來(lái)看看吧

需求描述

碰到需求,調用需要往表里插入5萬(wàn)條數據, 打算使用存儲過(guò)程,但是postgres 數據庫沒(méi)有建存儲( ?ヮ?)過(guò)程的SQL, 所以使用函數來(lái)實(shí)現.

表數據結構完整(zheng)性要求一次插入兩條記錄, 兩條記錄(′?`*)相互外鍵約束, record1 的 partner_id 字段值是 record2 的主鍵id的值, recoヾ(?■_■)ノrd2 的 partner_id 字段值是 rec??o(′?_?`)rd1 的主鍵id的值.

實(shí)現

create
or replace function creatData() returns boolean as $BODY$
decl( ???)are ii integer;
decl??are id1 integer;
declare id2 intege??r;
begin
ii = 1;
id1 = nextval('seq??_table');
id2 = nextval('seq_table');
FOR ii IN 1..50000 loop
insert
into
table1
values(
id??1,
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-0???7 13:55:08',
18051,
'2017-08-07 13:57:28',
false,
401,
10,
null,(╬?益?)
null,
null,
'D(′?ω?`)A-HZ001000003',
'2017-08-07 13:54:08'(?????),
'2017-08-??07 13:57:28',
10251
);
insert
into
t??able1
values(
id2,
10,
102(╬?益?)51,
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',
10(???)250
);
end LO??OP;
return true;
end;
$BODY$ LANGUAGE plpgsql;

問(wèn)題

這樣子插入只能插入一次, 因為取得序列值的地方在ヽ(′▽?zhuān)?ノ(zai)for循環(huán)的外面, id的值不會(huì )隨(′?_?`)著(zhù)循環(huán)再賦值, 主鍵沖突.

辦法

想到可以再對函數進(jìn)行循環(huán), 于是再寫(xiě)一個(gè)函數循環(huán)執行上一個(gè)函數, 去掉上個(gè)函數中的for 循環(huán)語(yǔ)句FOR i IN 1..500000?? loop='loop' 和 end loop='loop';

再寫(xiě)一個(gè)下面函數循環(huán)執行函數1

create or replace function loop="loop"C??reate()
returns vo??id as
$BODY$
begin for i in 1..50000 loop=""
PERFORM creatDa??ta();
end loop;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

執行函數

1select * from loop='loop'Create() as tab;

好了,完成,10萬(wàn)條數數據秒插, 2.1秒.

PS:CSDN的markdown??編(′▽?zhuān)?輯器真的很難用, 文字稍微長(cháng)一點(diǎn)就卡, 而且換行經(jīng)常自動(dòng)調跳回上一行, 無(wú)奈, 現在都是直接在別的地方寫(xiě)好粘貼回來(lái)&?hellip;

補充:postgresql 存儲過(guò)程中遍歷的一個(gè)小問(wèn)題

問(wèn)題

想實(shí)現這種功能,就是存儲 for r in 后面(mian)的sql語(yǔ)句是一個(gè)變量,要把以下代碼修改一下

"sqltext" = 'select "ID",過(guò)程"ZONENAME" from "ZONE_INFO" where "ID"<&(′ω`)gt;0';
for r in "sqltext"
loop='loop'
return next r;
end loop;

解決方法:

sqltext = 'select "ID","ZONENAME" from "ZONE_INFO" where "ID" <>0';
for r in execute sqltexヾ(′?`)?t
loop
return next r;
end loop="loop";

文章ヽ(′▽?zhuān)?/來(lái)源:腳本之家

來(lái)源地址:https://www.jb51.net/article/204917.htm

亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费 革吉县| 博野县| 共和县| 乌什县| 天峨县| 西丰县| 越西县| 兴山县| 科技| 巩义市| 高碑店市| 保康县| 鹤庆县| 根河市| 古田县| 静宁县| 廊坊市| 南康市| 屯昌县| 蚌埠市| 平邑县| 县级市| 高阳县| 同江市| 新干县| 公安县| 衡南县| 淮阳县| 滨州市| 新昌县| 新巴尔虎右旗| 化州市| 永泰县| 阿荣旗| 同德县| 乐至县| 长沙市| 浙江省| 陵水| 佛冈县| 交口县| http://444 http://444 http://444 http://444 http://444 http://444