注册 登录
编程论坛 SQL Server论坛

如何判断 sp_addextendedproc 过程是否存在 然后恢复

wifayy 发布于 2010-09-05 17:45, 1347 次点击
if exists(select 1 from sysobjects where id=object_id('dbo.sp_addextendedproc') and xtype='P')   
create procedure sp_addextendedproc @functname nvarchar(517),@dllname varchar(255) as set implicit_transactions off if @@trancount > 0 begin raiserror(15002,-1,-1,'sp_addextendedproc') return (1) end dbcc addextendedproc( @functname, @dllname) return (0)
else   
print '不存在'

貌似create 语句不允许出现在第2句

不知道该怎么写
6 回复
#2
wrqggc2010-09-05 21:19
不太懂~~呵呵 顶一下 顺便学习下
#3
gameohyes2010-09-05 21:56
回复 楼主 wifayy
create前一句
加个go
#4
qingshuiliu2010-09-06 14:09
"create procedure sp_addextendedproc @functname nvarchar(517),@dllname varchar(255) as set implicit_transactions off
if @@trancount > 0 begin raiserror(15002,-1,-1,'sp_addextendedproc') return (1) end
dbcc addextendedproc( @functname, @dllname)"
这样的代码就可以恢复存储过程吗?就我所知
dbcc只能做一些检查,信息采集和验证的功能。
#5
wifayy2010-09-06 15:45
"create procedure sp_addextendedproc @functname nvarchar(517),@dllname varchar(255) as set implicit_transactions off
if @@trancount > 0 begin raiserror(15002,-1,-1,'sp_addextendedproc') return (1) end
dbcc addextendedproc( @functname, @dllname)"

确实可以恢复的 相比较原来的过程缩短了很多呵呵
#6
wifayy2010-09-06 15:50
if   exists(select   1   from   sysobjects   where   id=object_id( 'dbo.sp_addextendedproc')   and   xtype= 'P ')

go

create procedure sp_addextendedproc @functname nvarchar(517),@dllname varchar(255) as set implicit_transactions off if @@trancount > 0 begin raiserror(15002,-1,-1,'sp_addextendedproc') return (1) end dbcc addextendedproc( @functname, @dllname) return (0)
else   
print '不存在'



提示
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ')' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,过程 sp_addextendedproc,行 3
在关键字 'else' 附近有语法错误。
#7
qingshuiliu2010-09-07 09:18
是不是else后面要:
else
begin
print '不存在'
end
dbcc addextendedproc( @functname, @dllname) return (0)
1