删除数据库中的存储过程

时间:2015-03-16 12:28:37

标签: sql-server

在检查临时表(然后删除它们)时,我使用了类似的格式:

if object_id('my_sp', 'U') is not null drop procedure my_sp
go

create procedure dbo.my_sp (
    @query varchar(100)
  , @result varchar(100) 
) as
insert into [TABLE] (finished, query, result) 
values (getdate(), @query, @result)
go

查看MSDN上的示例,这种方法应该可行。但是,它没有:

There is already an object named 'my_sp' in the database.

另一种方法是

SELECT
    OBJECT_NAME(my_sp)
FROM
    sys.sql_modules
WHERE
    definition LIKE '%' + 'mySP' + '%'

但问题仍然存在:为什么第一种方法适用于(临时)表而不适用于sp对象? (我喜欢保持一致)。

1 个答案:

答案 0 :(得分:4)

U中的object_id('my_sp', 'U')指定名称是用户表,使用P执行某个程序:object_id('my_sp', 'P')