我使用数据库脚本来检查是否存在存储过程,然后将其删除然后创建它。
以下哪项更有效地检查和删除SP 选项1
IF EXISTS(SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[myStoredProc]',N'P'))
DROP PROCEDURE dbo.myStoredProc;
选项2
IF OBJECT_ID (N'dbo. myStoredProc',N'P') IS NOT NULL
DROP PROCEDURE dbo.myStoredProc;
由于显而易见的原因,我决定使用第二个,是否有任何理由我应该选择第一个选项
答案 0 :(得分:3)
潮流发生了变化。 MSDN的当前策略是应该使用sys.objects而不是INFORMATION_SCHEMA视图,因为sys视图比后者有更多的信息。
答案 1 :(得分:1)
不,没有令人信服的理由直接使用sys.objects。事实上,不鼓励使用这些系统视图 - 所以如果你能避免它,那就这样做吧!
相反,应该尽可能使用INFORMATION_SCHEMA模式视图 - 这是一个标准的SQL-92机制,用于公开有关服务器的元数据(而不是Microsoft特定的使用sys。*视图的方式)。
马克