存在则删除重建,没有则直接创建。
8 个解决方案
#1
if exists(select name from sysobjects where name='OFFLINE' and type='P') drop procedure OFFLINE
go
go
#2
select * from sys.procedures
#3
这个是SQL 2000的吗?
在SQL 2000下提示 对象名 'sys.procedures' 无效。
在SQL 2000下提示 对象名 'sys.procedures' 无效。
#4
2楼的是2008或者2005才有的,我没有2005的环境,不知道2005有没有,但是2008是有的,你可以使用sys.sysobjects 来查找type='p'的那些,就是存储过程了。具体请看联机丛书
#5
还有一种方法,但是不知道2000支不支持:
if object_ID('存储过程名') is not null
drop proc 存储过程名
create proc 存储过程名
if object_ID('存储过程名') is not null
drop proc 存储过程名
create proc 存储过程名
#6
对临时存储过程不管用
使用类似临时表的处理方法也不起作用,即:tempdb..Proc_Name
使用类似临时表的处理方法也不起作用,即: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
go
#2
select * from sys.procedures
#3
这个是SQL 2000的吗?
在SQL 2000下提示 对象名 'sys.procedures' 无效。
在SQL 2000下提示 对象名 'sys.procedures' 无效。
#4
2楼的是2008或者2005才有的,我没有2005的环境,不知道2005有没有,但是2008是有的,你可以使用sys.sysobjects 来查找type='p'的那些,就是存储过程了。具体请看联机丛书
#5
还有一种方法,但是不知道2000支不支持:
if object_ID('存储过程名') is not null
drop proc 存储过程名
create proc 存储过程名
if object_ID('存储过程名') is not null
drop proc 存储过程名
create proc 存储过程名
#6
对临时存储过程不管用
使用类似临时表的处理方法也不起作用,即:tempdb..Proc_Name
使用类似临时表的处理方法也不起作用,即: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')