怎样查找数据库中的所有存储过程?

时间:2022-03-30 13:50:17
怎样查找数据库中的所有存储过程(或临时存储过程)?

存在则删除重建,没有则直接创建。

8 个解决方案

#1


if exists(select name from sysobjects   where name='OFFLINE' and type='P')   drop procedure OFFLINE
go

#2


select * from sys.procedures

#3


这个是SQL 2000的吗?
在SQL 2000下提示   对象名 'sys.procedures' 无效。

#4


引用 3 楼 S39338973 的回复:
这个是SQL 2000的吗?
在SQL 2000下提示   对象名 'sys.procedures' 无效。
2楼的是2008或者2005才有的,我没有2005的环境,不知道2005有没有,但是2008是有的,你可以使用sys.sysobjects 来查找type='p'的那些,就是存储过程了。具体请看联机丛书

#5


还有一种方法,但是不知道2000支不支持:
if object_ID('存储过程名') is not null
 drop proc 存储过程名
create proc 存储过程名

#6


对临时存储过程不管用
使用类似临时表的处理方法也不起作用,即:tempdb..Proc_Name

#7


USE msdb
GO
IF OBJECT_ID('tempdb..#test', 'u') IS NOT NULL 
    DROP TABLE #test
CREATE TABLE #test ( id INT )
GO


这个在2008可以反复执行,不过不知道2000有没有而已

#8


存储过程 OBJECT_ID('nn','p')

#1


if exists(select name from sysobjects   where name='OFFLINE' and type='P')   drop procedure OFFLINE
go

#2


select * from sys.procedures

#3


这个是SQL 2000的吗?
在SQL 2000下提示   对象名 'sys.procedures' 无效。

#4


引用 3 楼 S39338973 的回复:
这个是SQL 2000的吗?
在SQL 2000下提示   对象名 'sys.procedures' 无效。
2楼的是2008或者2005才有的,我没有2005的环境,不知道2005有没有,但是2008是有的,你可以使用sys.sysobjects 来查找type='p'的那些,就是存储过程了。具体请看联机丛书

#5


还有一种方法,但是不知道2000支不支持:
if object_ID('存储过程名') is not null
 drop proc 存储过程名
create proc 存储过程名

#6


对临时存储过程不管用
使用类似临时表的处理方法也不起作用,即:tempdb..Proc_Name

#7


USE msdb
GO
IF OBJECT_ID('tempdb..#test', 'u') IS NOT NULL 
    DROP TABLE #test
CREATE TABLE #test ( id INT )
GO


这个在2008可以反复执行,不过不知道2000有没有而已

#8


存储过程 OBJECT_ID('nn','p')