Saa*_*ail 28 stored-procedures sql-server-2000 sql-drop
简单的问题,正如标题所示:
通过首先检查SP是否存在,删除SQL Server 2000中的存储过程(SP)的语法是什么?
请提供完整的代码.
Bro*_*ams 45
Microsoft建议使用该object_id()功能,如下所示:
IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[YourProcedure]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[YourProcedure]
GO
Run Code Online (Sandbox Code Playgroud)
.
object_id()帮助解决所有者冲突.如果这样做
SELECT name FROM sysobjects WHERE name = 'my_procedure'
,您可能会看到许多具有相同名称的不同程序 - 所有程序都适用于不同的所有者
但是,SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]')如果存在多个具有该名称的过程,则仅显示当前所有者/用户的那个.
仍然,始终指定对象所有者(默认为dbo).这不仅可以避免令人讨厌的副作用,而且还会更快一些.
不适用于 SQL Server 2000,但从 SQL Server 2016 开始,您可以使用 IF EXISTS 语法:
DROP PROCEDURE IF EXISTS [sp_ProcName]
Run Code Online (Sandbox Code Playgroud)
一个稍微简单的方法,无需进入系统表:
IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67253 次 |
| 最近记录: |