當前位置:首頁 » 存儲配置 » 存儲過程優化批量插入

存儲過程優化批量插入

發布時間: 2024-03-19 15:20:14

❶ 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存儲過程提問: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;

❸ sqlserver 存儲過程大批量數據插入

可使用Merge Into 語句完成操作。
具體用法參考文章:http://www.cnblogs.com/biwork/p/3370335.html

❹ SQL Server中 用存儲過程 怎樣 在同一時間向一張表插入多條數據

如果必須裂裂同時插的話,建議你使用一個臨時表。 在存儲過程中先將肆蔽閉數據整理的臨時表中。假設臨時表名叫temp,目標表名叫 result。並高
最後執行 insert into result select * from temp;
就可以講 temp表中的數據 一次入到 目標表中了。

❺ 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了,你試下吧

❻ 如何用SQL語句將數據批量插入資料庫

這種情況使用xml來進行批量插入.
1.asp.net頁面上抓取數據,轉換成xml字元串
2.將這個字元串作為參數傳給存儲過程
3.存儲過程里,將這個xml讀取成臨時表
4.整個臨時表插入到目標數據表中,這個過程可以使用sql
server的事務;其實在這里用不用事務問題都不大了,因為存儲過程出錯,數據插不進去的,還會拋出異常到asp.net後台,讓後台進行處理異常.
您用游標或asp.net代碼來循環,速度會比較慢的.

❼ mysql存儲過程怎樣批量插入數據

一下代碼運行通過:

delimiter$$;
createprocerelucia_proc16(countint)
begin
DECLAREname_procVARCHAR(20)CHARACTERSETutf8;
DECLAREsex_procVARCHAR(4)CHARACTERSETutf8;
DECLAREage_procINT(10);
DECLAREclass_procVARCHAR(20)CHARACTERSETutf8;
DECLAREAddr_procVARCHAR(50)CHARACTERSETutf8;
DECLAREiINT;
seti=1;
setsex_proc='女';
setage_proc=20;
setclass_proc='山治班';
setAddr_proc='北京市朝陽區';
whilei<countdo
setname_proc=CONCAT('露西亞',i);
insertintostudents(Name,Sex,age,class,Addr)values(name_proc,sex_proc,age_proc,class_proc,Addr_proc);
seti=i+1;
endwhile;
end
$$;
delimiter;

代碼功能:

傳入一個行數,控制插入多少條數據

運行效果:

❽ 怎麼寫存儲過程,向資料庫中批量插入數據

  1. 用循環語句生成欄位值insert

  2. SQL 如下:

createprocereInsertTest

as

begin

declare@iint

declare@svarchar(20)

set@i=1

while@i<=100

begin

select@s=cast(@iASvarchar(20))

insertintotest(A,B,C,D)VALUES('a'+@s,'b'+@s,'ccccc','ddddd')

SET@i=@i+1

end

end

❾ 存儲過程批量插入數據問題

create proc pc_Text
@number_star int,
@number_end int
as
declare @int int
set @int=@number_end-@number_star+1
while(@int>0)
begin
select @int= count(1) from Text where aNumber1=@number_star
if(@int=1) --如果存在變化就不插入
begin
set @number_star=@number_star+1
set @int=@number_end-@number_star+1

end
else
begin
insert into Text value(@number_star ,...)
set @number_star=@number_star+1
set @int=@number_end-@number_star+1

end
end

熱點內容
百度雲7z解壓 發布:2024-11-27 22:41:36 瀏覽:711
哈利波特不同伺服器有什麼不同 發布:2024-11-27 22:33:45 瀏覽:77
鎖ip伺服器 發布:2024-11-27 22:31:48 瀏覽:176
腳本刷精粹 發布:2024-11-27 22:30:31 瀏覽:991
電腦定時清理文件的腳本 發布:2024-11-27 22:27:49 瀏覽:996
安卓系統傳奇哪個好玩 發布:2024-11-27 22:26:17 瀏覽:253
oracle存儲過程重命名 發布:2024-11-27 22:12:51 瀏覽:547
串口伺服器幾個ip 發布:2024-11-27 21:58:21 瀏覽:325
麥芒5腳本 發布:2024-11-27 21:45:33 瀏覽:848
dnf龍貓腳本 發布:2024-11-27 21:45:15 瀏覽:959