国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

用一個存儲過程實現分步刪除數據表記錄

2024-07-21 02:42:33
字體:
來源:轉載
供稿:網友
簡介在實際的工作和學習中,我們需要分步刪除數據表的一些記錄,分批提交用以減少對Undo的使用,在本中我們將介紹一個簡單的存儲過程用于實現此邏輯。

大家可以根據各自的需要進行適當調整。

參考示例如下:

SQL> create table test as select * from dba_objects;Table created.SQL>

create or replace PRocedure deleteTab 2 /** 3 ** Usage:

run the script to create the proc deleteTab 4 **

in SQL*PLUS, type "exec deleteTab('Foo','ID>=1000000','3000');" 5 **

to delete the records in the table "Foo", commit per 3000 records. 6 **

7 **/ 8 ( 9 p_TableName in varchar2,

--The TableName which you want to delete from 10 p_Condition in varchar2,

--Delete condition, such as "id>=100000" 11 p_Count in varchar2

--Commit after delete How many records 12 ) 13 as 14

pragma autonomous_transaction; 15 n_delete number:=0; 16

begin 17 while 1=1 loop 18 EXECUTE IMMEDIATE 19

'delete from '||p_TableName||' where '||p_Condition||'

and rownum <= :rn' 20 USING p_Count; 21

if SQL%NOTFOUND then 22 exit; 23 else 24

n_delete:=n_delete + SQL%ROWCOUNT; 25 end if; 26

commit; 27 end loop; 28 commit; 29 DBMS_OUTPUT.PUT_LINE('Finished!');

30 DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');

31 end; 32 /Procedure created.SQL> insert into test select * from dba_objects;

6374 rows created.SQL> /6374 rows created.SQL> /6374 rows created.SQL> commit;Commit

complete.SQL> exec deleteTab('TEST','object_id >0','3000')Finished!Totally 19107

records deleted!PL/SQL procedure successfully completed.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马公市| 武安市| 潜山县| 安顺市| 夹江县| 永和县| 清水河县| 惠水县| 沙河市| 霍城县| 舞钢市| 车险| 芷江| 邢台市| 三亚市| 洞口县| 商洛市| 景洪市| 南京市| 盈江县| 石台县| 陆川县| 馆陶县| 永州市| 仪陇县| 祁东县| 冷水江市| 大埔县| 长岛县| 金堂县| 平昌县| 合川市| 张家界市| 临泉县| 巨鹿县| 霍山县| 阳东县| 岐山县| 广平县| 东山县| 威海市|