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