我来自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。
因此,如果要更改其参数或正文,则必须删除并创建该过程。