删除数据库中所有存储过程和函数的sql语句
生活随笔
收集整理的這篇文章主要介紹了
删除数据库中所有存储过程和函数的sql语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-刪除數據庫中所有存儲過程和函數的sql語句
USE [TmpDb]
SELECT ?IDENTITY( INT,1,1 ) flag ,
? ? ? ? [name] NAMES,xtype
INTO ? ?#tmp
FROM ? ?sysobjects
WHERE ? xtype = 'tf'
? ? ? ? OR xtype = 'fn'
? ? ? ? OR xtype = 'p'
? ? ? ??
DECLARE @tb VARCHAR(1000) ,
? ? ? ? @type NVARCHAR(2),
? ? @a INT ,
? ? @b INT ,
? ? @sql VARCHAR(8000)
SELECT ?@a = MIN(flag) ,
? ? ? ? @b = MAX(flag)
FROM ? ?#tmp
WHILE @a <= @b?
? ? BEGIN
? ? ? ? SELECT ?@tb = NAMES,@type=xtype
? ? ? ? FROM ? ?#tmp
? ? ? ? WHERE ? flag = @a
? ? ? ? IF @type='p'
? ? ? ? BEGIN
? ? ? ? ? SET @sql = 'drop Procedure ?' + @tb
? ? ? ? END
? ? ? ? ELSE
? ? ? ? BEGIN
? ? ? ? ? SET @sql = 'drop FUNCTION ?' + @tb
? ? ? ? END ? ? ? ?
? ? ? ? PRINT @sql
? ? ? ? EXEC(@sql)
? ? ? ? SET @a = @a + 1
? ? END
DROP TABLE #tmp
USE [TmpDb]
SELECT ?IDENTITY( INT,1,1 ) flag ,
? ? ? ? [name] NAMES,xtype
INTO ? ?#tmp
FROM ? ?sysobjects
WHERE ? xtype = 'tf'
? ? ? ? OR xtype = 'fn'
? ? ? ? OR xtype = 'p'
? ? ? ??
DECLARE @tb VARCHAR(1000) ,
? ? ? ? @type NVARCHAR(2),
? ? @a INT ,
? ? @b INT ,
? ? @sql VARCHAR(8000)
SELECT ?@a = MIN(flag) ,
? ? ? ? @b = MAX(flag)
FROM ? ?#tmp
WHILE @a <= @b?
? ? BEGIN
? ? ? ? SELECT ?@tb = NAMES,@type=xtype
? ? ? ? FROM ? ?#tmp
? ? ? ? WHERE ? flag = @a
? ? ? ? IF @type='p'
? ? ? ? BEGIN
? ? ? ? ? SET @sql = 'drop Procedure ?' + @tb
? ? ? ? END
? ? ? ? ELSE
? ? ? ? BEGIN
? ? ? ? ? SET @sql = 'drop FUNCTION ?' + @tb
? ? ? ? END ? ? ? ?
? ? ? ? PRINT @sql
? ? ? ? EXEC(@sql)
? ? ? ? SET @a = @a + 1
? ? END
DROP TABLE #tmp
總結
以上是生活随笔為你收集整理的删除数据库中所有存储过程和函数的sql语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 酷狗音乐盒2010
- 下一篇: sqlserver中无ldf文件附加数据