如果尝试创建的任何过程已经存在,我的脚本就会崩溃。如何检查/删除是否已创建此过程?
答案 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”选项上使用“忽略”未找到的对象。