タイトルが示すように、単純な質問:
最初に SP が存在することを確認して、SQL Server 2000 でストアド プロシージャ (SP) を削除する構文は何ですか?
完全なコードを提供してください。
タイトルが示すように、単純な質問:
最初に SP が存在することを確認して、SQL Server 2000 でストアド プロシージャ (SP) を削除する構文は何ですか?
完全なコードを提供してください。
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
.
object_id()
所有者の競合を解決するのに役立ちます。
SELECT name FROM sysobjects WHERE name = 'my_procedure'
実行すると、同じ名前のさまざまなプロシージャ (すべて異なる所有者) が表示される場合があります。
ただし、SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]')
その名前のプロシージャが複数存在する場合は、現在の所有者/ユーザーのプロシージャのみが表示されます。
それでも、常にオブジェクトの所有者を指定します (デフォルトは ですdbo
)。これにより、厄介な副作用が回避されるだけでなく、少し高速になります。
システムテーブルに行かない少し簡単な方法:
IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
GO
SQL Server 2000 ではなく、SQL Server 2016 以降では、IF EXISTS 構文を使用できます。
DROP PROCEDURE IF EXISTS [sp_ProcName]
このような:
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'my_procedure' AND type = 'P')
DROP PROCEDURE my_procedure GO
それが役立つことを願っています!
SQL SERVER 2008
で、ストアド プロシージャを削除したい場合は、以下のコマンドを記述してください....
DROP PROC Procedure_name
DROP PROC dbo.spInsertUser
それが役に立てば幸い..