当前位置:首页 » 存储配置 » 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 表名
;

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:640
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:368
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:85
php微信接口教程 发布:2025-04-16 17:07:30 浏览:310
android实现阴影 发布:2025-04-16 16:50:08 浏览:793
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:345
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:213
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:812
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:366
土压缩的本质 发布:2025-04-16 16:13:21 浏览:593