3

我使用数据库脚本检查是否存在存储过程,然后删除它然后创建它。

以下哪项对于检查和删除 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;

由于显而易见的原因,我决定使用第二个,有什么理由我应该选择第一个选项

4

2 回答 2

3

潮流变了。MSDN 的当前策略是应使用 sys.objects 代替 INFORMATION_SCHEMA 视图,因为 sys 视图比后者具有更多信息。

于 2016-05-16T13:25:04.770 回答
1

不,没有令人信服的理由直接使用 sys.objects。事实上,不鼓励使用这些 sys 视图 - 所以如果你能避免它,那就这样做吧!

相反,应该尽可能使用 INFORMATION_SCHEMA 模式视图 - 这是一种标准 SQL-92 机制,用于公开有关您的服务器的元数据(而不是 Microsoft 特定的使用 sys.* 视图的方式)。

马克

于 2009-04-28T05:46:18.900 回答