游標批 量刪除資料表

2022-02-26 04:35:18 字數 2576 閱讀 4197

declare @tablename varchar(30),

@sql varchar(500)

declare cur_delete_table cursor read_only forward_only for

select name from sysobjects where name like 'pub%' and type='u'

open cur_delete_table

fetch next from cur_delete_table into @tablename

while @@fetch_status = 0

begin

select @sql='delete from  '+@tablename

exec (@sql)

fetch next from cur_delete_table into @tablename

endclose cur_delete_table

deallocate cur_delete_table

有時候我們需要清空資料庫中所有使用者表的資料,如果一張表一張表的清空的話,遇到乙個龐大的資料系統估計得崩潰了. 用游標加上用變數來引用表名就可以做到這一點. 用變數來引用表名對錶操作可以用在儲存過程中,根據需要動太選擇引用某個表的資料或對其操作 

//定義游標 declare tables_cursor cursor

forselect name from sysobjects where type = 'u' //選擇使用者表名

open tables_cursor //開啟游標連線

declare @tablename sysname   // 定義變數

fetch next from tables_cursor into @tablename   //結果集中一行一行讀取表名

while (@@fetch_status <> -1) //判斷游標狀態 

begin

exec ('truncate table ' + @tablename)   //清空表中的資料

fetch next from tables_cursor into @tablename //下一行資料

enddeallocate tables_cursor //關閉游標  

例如:create proc clearallusertable 

as begin 

declare tables_cursor cursor

forselect name from sysobjects where type = 'u'  

open tables_cursor 

declare @tablename sysname    

fetch next from tables_cursor into @tablename    

while (@@fetch_status <> -1)  

begin

--print   @tablename

exec ('truncate table ' + @tablename)       

fetch next from tables_cursor into @tablename  

end 

deallocate tables_cursor 

end; 

gomssql批量刪除資料庫中的表或者儲存過程

先在系統表中找到要處理的表名或者是儲存過程的名字,在用游標對其進行處理

注意  sysobjects.xtype的值不同 刪除命令是不同的如刪除儲存過程用drop procedure procedurename 刪除錶用 drop table  tablename  sysobjects.xtype的值表示的意思如下表:

c:檢查約束。 

d:預設的約束 

f:外來鍵約束 

l:日誌 

p:儲存過程 

pk:主鍵約束 

rf:複製過濾儲存過程 

s:系統** 

tr:觸發器 

u:用於**。 

uq:獨特的約束。

批量處理的**如下:

declare cursorname cursor for select 'drop procedure  '+name from sysobjects where name like 'xx%' and xtype = 'p' --刪除對應的儲存過程

declare cursorname cursor for select 'drop table  '+name from sysobjects where name like 'xx%' and xtype = 'u' --刪除對應的表

open cursorname

declare @curname sysname

fetch next from cursorname into @curname

while(@@fetch_status=0)

begin

exec(@curname)

fetch next from cursorname into @curname

endclose cursorname

deallocate cursorname

Mysql 批量刪除資料表資料

drop 不再需要該錶 truncate 保留該錶,但要刪除所有記錄 delete 要刪除部分記錄或者有可能會後悔的話,用 delete 1.drop table tb drop 是直接將 刪除,無法找回。例如刪除 user 表 drop table user 2.truncate table tb...

DataWorks使用之批量刪除資料表

maxcompute平台上儲存著海量的資料,對應著數以百計 千計的資料表,如何高效 快捷的管理這些表,成為了管理員的重要任務。比如要在這茫茫多的資料表中,刪除表名包含字串 temp 的臨時資料表,管理員這時該如何操作,才能快速的找到這些資料表,並刪除它們呢?請往下看 首先使用者登入管理控制台,進入d...

MySQL 刪除資料表

mysql中刪除資料表是非常容易操作的,但是你再進行刪除表操作時要非常小心,因為執行刪除命令後所有資料都會消失。以下為刪除mysql資料表的通用語法 drop table table name 以下例項刪除了資料表runoob tbl root host mysql u root penter pa...