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;

明白な理由により、2 番目のオプションを使用することにしました。最初のオプションを使用する理由はありますか?

4

2 に答える 2

1

いいえ、sys.objects を直接使用する説得力のある理由はありません。実際のところ、これらの sys ビューの使用は推奨されていません。回避できる場合は、そうしてください。

代わりに、INFORMATION_SCHEMA スキーマ ビューが可能な場合に使用されることになっています。これは、(sys.* ビューを使用する Microsoft 固有の方法ではなく) サーバーに関するメタデータを公開するための標準的な SQL-92 メカニズムです。

マルク

于 2009-04-28T05:46:18.900 に答える