当前位置:首页 » 存储配置 » oracle存储过程insert

oracle存储过程insert

发布时间: 2025-03-07 21:32:10

⑴ 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存储过程时,出现错误:pls-00103:出现符号"insert"在需要下列之一时

as 后要写begin
CREATE OR REPLACE PROCEDURE Bom(Oldid VARCHAR2,
Newid VARCHAR2,
USER VARCHAR2,
Company VARCHAR2) AS

begin

INSERT Cc_Record_Bom
SELECT Sys_Guid(),
Item,
Item_Class,
Item_d,
Item_d_Class,
Net_Qty,
Waste_Qty,
Total_Qty,
Bom_Ver,
Start_Date,
End_Date,
Newid,
Remark,
USER,
SYSDATE,
USER,
SYSDATE,
Company
FROM Cc_Record_Bom
WHERE Code = Oldid;

INSERT Cc_Stand_Bom
SELECT Sys_Guid(),
Item,
Item_d,
Net_Qty,
Waste_Qty,
Total_Qty,
Bom_Ver,
Start_Date,
End_Date,
Newid,
Remark,
USER,
SYSDATE,
USER,
SYSDATE,
Company,
Item_Class,
Item_d_Class
FROM Cc_Stand_Bom
WHERE Code = Oldid;

INSERT Cc_Wo_Bom
SELECT Item,
Item_d,
Net_Qty,
Waste_Qty,
Total_Qty,
Bom_Ver,
Start_Date,
End_Date,
Newid,
Remark,
USER,
SYSDATE,
USER,
SYSDATE,
Company,
Item_Class,
Item_d_Class
FROM Cc_Wo_Bom
WHERE Code = Oldid;

END Bom;

⑶ Oracle 并行循环执行存储过程语句

在处理大数据量的插入操作时,直接使用存储过程进行逐条插入效率较低。为提高性能,可以利用Oracle的并行执行特性。具体方法是将需要插入的数据通过UNION ALL进行合并,然后使用带有并行指示的INSERT语句一次性插入。例如:

插入语句可以写成:

insert /*+ parallel(tablename, 3) */ into tablename select * from table1 union all select * from table2 union all select * from table3

这里的parallel(tablename, 3)表示将tablename表的插入操作并行执行,同时执行的线程数为3。通过这种方式,可以显着提升数据插入的速度。

需要注意的是,并行执行并非适用于所有场景。在某些情况下,如表结构复杂、索引较多或数据量较小的情况下,使用并行执行可能并不会带来明显的性能提升,甚至可能降低效率。

此外,合理设置并行度也很重要。过高的并行度可能导致资源竞争加剧,反而影响性能。因此,在实际应用中,需要根据具体情况进行测试和调整。

总之,通过合理利用Oracle的并行执行特性,可以有效提升存储过程中的数据插入效率,特别是在处理大数据量场景时。

⑷ oracle存储过程中Insert表名(字段名)values(字段名)

insert into 表名 values后面括号里应该是值,而不是字段名;
如果是从另外一个表里插入到当前表,应该是这样写:
Insert Into TI_AIS_ADDRLINE
(
ADDR_ID --地址标识
,DIST_CD --行政区划代码
,POST_CD --邮政编码
,POST_CD1 --邮政编码1
,POST_CD2 --邮政编码2
,ADDR_NAME --地址名称
,RELA_ADDR_ID --关联地址标识
,RELA_ADDR_NAME --关联地址名称
,DATA_SRC_CD --数据来源代码
,LAST_UPD_DATE --最后更新日期
)
SELECT
ADDR_ID
,DIST_CD
,POST_CD
,POST_CD1
,POST_CD2
,ADDR_NAME
,RELA_ADDR_ID
,RELA_ADDR_NAME
,DATA_SRC_CD
,to_date(LAST_UPD_DATE, 'yyyy-mm-dd hh24:mi:ss')
FROM 表名
;

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:593
制作脚本网站 发布:2025-10-20 08:17:34 浏览:888
python中的init方法 发布:2025-10-20 08:17:33 浏览:582
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:765
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:684
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1013
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:255
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:114
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:806
python股票数据获取 发布:2025-10-20 07:39:44 浏览:713