oracle存储过程批量插入数据
‘壹’ oracle存储过程提问:oracle 用存储过程将某一表里符合条件的数据查出来之后,批量插入另一张表中
先把表创建起来,然后用insert语句插入。
create or replace procere P_Insert(v_date in varchar2,v_cp varchar2) is
begin
INSERT INTO ora201301 SELECT * FROM bh
WHERE 字段名1 BETWEEN v_date||'/01' AND v_date||'/31' AND 字段名2=v_cp;
COMMIT;
end P_Insert;
‘贰’ oracle存储过程循环插数据
有以下几个步骤。
在表account中循环插入数据,id从1001到1005。createor
replace
procere
test
is--存储过程,名称为test。v_id
int;
--声明变量。begin。v_id
:=1001;
--ACCOUNT_ID从1001插到1005。while
v_id
<=1005--设置插入的次数。loop。
‘叁’ 怎么批量往oracle数据库中造大量的数据
那要看你需要什么类型的数据了。
最简单的,写一个存储过程,在里头添加一个insert,循环个 大量 次数。
如果存在其他表中有大量数据的,也可以
insert 新表 select from 其他表。
注意一下字段类型。
‘肆’ oracle 存储过程批量插入
存储过程使用游标
要插入的表最好先不要建索引
‘伍’ oracle 用存储过程将某一些表里面的数据查出来之后,批量插入另一张大表中,并判断,若有些已经存在的数据
MERGE INTO table1 p
USING table2 np
ON (p.proct_id = np.proct_id)
WHEN MATCHED THEN
UPDATE
SET p.proct_name = np.proct_name,
WHEN NOT MATCHED THEN
INSERT
VALUES (np.proct_id, np.proct_name, np.category)
备注:
table1:是要插入数据的目标表
table2 :是数据的来源表
针对你提出的需求是不用写存储过程的,上面的sql就完全可以实现;当然,你将上面的sql代码
放到过程体里面就OK了,你试下吧
‘陆’ oracle存储过程用fetch循环实现向一张表中插入不同数据
创建测试表
createtabletest
(touch_idvarchar2(20),
party_idvarchar2(20));
执行过程
declare
v_idint;
begin
v_id:=1;
whilev_id<=10--这个10设置为插入的次数
loop
insertintotestvalues('张三'||v_id,'partyid'||v_id);
v_id:=v_id+1;
endloop;
commit;
end;
结果
‘柒’ 求一段批量插入数据的存储过程 oracle
可以使用Orcel的工具来进行导入,可以在网上搜索下,
有很多这方面软件下载的,这样会很快的,
呵呵,希望能有帮助,^_^
‘捌’ oracle存储过程怎样批量插入新数据
需要生成的SQL
insert into TMP_UPSTATE_CASEKEY values('TMP0000001', 1, sysdate);
存储过程实现
create or replace procere proc_casekey_upstate
as
casekey char(14);
begin
for i in 1..10000000 loop
casekey := 'TMP'||lpad(i,7,0); -- TMP0000001
insert into TMP_UPSTATE_CASEKEY values(casekey, 1, sysdate);
end loop;
commit;
end;
begin
proc_casekey_upstate();
end;
测试发现生成一千万条数据用了14分钟左右,性能还是可以了,如果先去掉TMP_NUM_STATUS_ID的外键估计更快。
或者:
insert into TMP_UPSTATE_CASEKEY select 'TMP'||LPAD(rownum,7,0),1,sysdate from al connect by level <= 1000000;
‘玖’ oracle 用存储过程向表插入数据的问题
实际上存储过程向表中插入数据和sql执行的区别是不大的,只不过是存储过程是用loop等循环插入,之后顺序执行sql语句,不用命令行执行。
_data_4_pressure_3
is
--Result1VARCHAR2(50);
VAR_numnumber;
begin
VAR_num:=1;
while
VAR_num<1000000
LOOP
insertintorp_trans_log_day
(trans_time,
trans_province,
trans_type,
score_range,
rule_name,
trans_num)
selectto_date('2013/10/29','yyyy-mm-dd'),
round(dbms_random.value(1,300))||'省',
round(dbms_random.value(1,800))||'类型',
round(dbms_random.value(1,100))||'风险分值',
round(dbms_random.value(1,300))||'规则名称',
'1'
fromal;
commit;
VAR_num:=VAR_num+1;
<ahref="https://www..com/s?wd=end&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">end</a>loop;
<ahref="https://www..com/s?wd=end&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">end</a>insert_data_4_pressure_3;