【问题标题】:MySQl IF NOT EXISTS, CREATE Stored procedureMySQl 如果不存在,则创建存储过程
【发布时间】:2016-11-09 00:42:47
【问题描述】:

我来自 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 sql-server tsql stored-procedures


    【解决方案1】:

    您可以查看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

    因此,如果您想更改其参数或主体,无论如何您都必须删除并创建该过程。

    【讨论】:

      猜你喜欢
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 2018-08-28
      • 2010-09-19
      • 2016-11-11
      • 2017-10-14
      • 2021-07-10
      相关资源
      最近更新 更多