3

作成しようとしているプロシージャのいずれかがすでに存在する場合にフォールオーバーするスクリプトがあります。このプロシージャがすでに作成されているかどうかを確認/削除するにはどうすればよいですか?

4

4 に答える 4

1
IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Procedure_Name]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[Procedure_Name]

私はこれがあなたを助けると思う

于 2009-01-05T12:54:55.337 に答える
1

私は次の行に沿って何かを推測します:

IF EXISTS
(
    SELECT *
    FROM SYSPROCS
    WHERE SPECIFIC_SCHEMA = ???
      AND SPECIFIC_NAME = ???
      AND ROUTINE_SCHEMA = ???
      AND ROUTINE_NAME = ???
)
    DROP PROCEDURE ???

SPECIFIC_* 情報が実際に必要かどうかはわかりません。また、名前が同じで呼び出しシグネチャが異なる 2 つのプロシージャがある場合の処理​​方法もわかりませんが、うまくいけば、これで正しい軌道に乗ることができます。

于 2008-10-01T11:52:36.997 に答える
0

この方法で存在を確認できます(注-大文字と小文字を確認してください):

SELECT *                       
FROM QSYS2/PROCEDURES          
WHERE PROCNAME LIKE 'your-procedure-name'
AND   PROCSCHEMA = 'your-procedure-library'   
于 2013-09-12T03:55:33.443 に答える
0

DROP PROCEDURE xxx ; CREATE PROCEDURE XXX . . . ;

DROP PROCEDUREスクリプトの最初のステートメントとしてaを含めます。RUNSQLSTM を使用して実行する場合は、ERRLVL(20) を使用して、DROP が失敗できるようにします。「SQL スクリプトの実行」を実行する場合は、「ドロップ時に "オブジェクトが見つかりません" を無視する」オプションを使用します。

于 2014-03-23T11:22:47.480 に答える