當前位置:首頁 » 存儲配置 » 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 表名
;

熱點內容
電商erp源碼 發布:2025-05-01 10:37:11 瀏覽:836
怎麼自己創建斗羅伺服器 發布:2025-05-01 10:25:05 瀏覽:430
java拆箱裝箱 發布:2025-05-01 10:20:55 瀏覽:475
聯想最後一次正確配置怎麼進入 發布:2025-05-01 10:11:31 瀏覽:105
資料庫什麼是報表 發布:2025-05-01 10:05:54 瀏覽:497
python爬蟲百科 發布:2025-05-01 10:05:15 瀏覽:705
以前的安卓游戲哪裡下載 發布:2025-05-01 09:50:10 瀏覽:592
區域網電腦數據怎麼備份到伺服器 發布:2025-05-01 09:45:15 瀏覽:882
mmn演算法 發布:2025-05-01 09:30:05 瀏覽:451
視頻伺服器搭建海康 發布:2025-04-30 23:50:29 瀏覽:96