SQL SERVER - MySQl 如果不存在,请创建存储过程



我来自Microsoft SQl使用他们的服务器管理工作室的背景。我最近切换到 mysql,并希望使用与 MSSQL 相同的方法创建一个存储过程。如果它不存在,我想创建一个过程,因为我更喜欢它而不是删除如果存在。下面是我将在MSSQL中使用的语法。任何帮助将不胜感激。

IF NOT EXISTS 
(
SELECT 
    1 
FROM 
    sysobjects WITH (NOLOCK) 
WHERE 
    [type] = 'P' AND name = 'Sproc'
)
EXEC('CREATE PROCEDURE dbo.Sproc AS BEGIN SET NOCOUNT ON; END')
GO
ALTER PROCEDURE dbo.Sproc
(
    @Sproc_Params
)
AS
BEGIN
.... --Sproc code
END

您可以查看mysql.proc以查看是否存在过程。

SELECT db, name FROM mysql.proc WHERE db = 'dbo' AND name = 'Sproc';

但是,在 MySQL 中,您无法ALTER PROCEDURE替换过程正文。您只能更改过程的几个属性。有关详细信息,请参阅 http://dev.mysql.com/doc/refman/5.7/en/alter-procedure.html。

因此,如果要更改其参数或正文,则必须删除并创建该过程。

最新更新