sql - object_id() 与 sys.objects

标签 sql sql-server-2005 stored-procedures sql-scripts

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

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

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

最佳答案

风向变了。 MSDN 的当前策略是应该使用 sys.objects 而不是 INFORMATION_SCHEMA View ,因为 sys View 比后者包含更多信息。

关于sql - object_id() 与 sys.objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/796356/

相关文章:

sql - 从数据库中的每个表中选择每一行,其中 (columnName = value) 如果列名存在

stored-procedures - MyBatis 映射器调用具有多个 IN 参数的 PROC

mysql - 根据已知日期时间随机更新日期时间字段

php - 在 PHP 中从三个 MySQL 表中选择数据

java - 如何将我的 Web 应用程序连接到 SQL Server/SQL Server Express

sql-server - SQL Server Always Encrypted 操作数类型冲突 : varchar is incompatible with varchar(60) when running EXEC sproc

sql-server - 使用从 sql 函数获取的值时 ORDER BY

sql - Firebird 备份还原令人沮丧,有没有办法避免它?

Python:将 SELECT 查询列表转换为字典

java - 如何限制表的大小?