在检查临时表(然后删除它们)时,我使用了类似的格式:
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对象? (我喜欢保持一致)。
答案 0 :(得分:4)
U
中的object_id('my_sp', 'U')
指定名称是用户表,使用P
执行某个程序:object_id('my_sp', 'P')