iSeries SQL过程 - 检查是否已存在

时间:2008-10-01 10:29:50

标签: sql ibm-midrange

如果尝试创建的任何过程已经存在,我的脚本就会崩溃。如何检查/删除是否已创建此过程?

4 个答案:

答案 0 :(得分:1)

我会猜测:

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

我不知道你是否确实需要SPECIFIC_ *信息,我不知道如何处理你有两个同名但不同的呼叫签名程序的情况,但希望这可以让你在右边轨道。

答案 1 :(得分: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]

我认为这会对你有帮助

答案 2 :(得分:0)

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

SELECT *                       
FROM QSYS2/PROCEDURES          
WHERE PROCNAME LIKE 'your-procedure-name'
AND   PROCSCHEMA = 'your-procedure-library'   

答案 3 :(得分:0)

DROP PROCEDURE xxx ; CREATE PROCEDURE XXX . . . ;

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