3

如果它试图创建的任何程序已经存在,我有一个脚本会失败。如果此过程已创建,我如何检查/删除?

4

4 回答 4

1

我猜想是这样的:

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

我不知道您是否真的需要 SPECIFIC_* 信息,并且我不知道如何处理您有两个具有相同名称但调用签名不同的过程的情况,但希望这能让您走上正确的轨道。

于 2008-10-01T11:52:36.997 回答
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 回答
0

DROP PROCEDURE xxx ; CREATE PROCEDURE XXX . . . ;

包括 aDROP PROCEDURE作为脚本中的第一条语句。如果您使用 RUNSQLSTM 运行,请使用 ERRLVL(20) 以允许 DROP 失败。如果您通过“运行 SQL 脚本”运行,请使用“在 DROP 上忽略“未找到对象”选项。

于 2014-03-23T11:22:47.480 回答
0

您可以通过这种方式检查是否存在(注意 - 确保大小写):

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