如何在mysql中更改存储过程

Tej*_*swi 12 mysql

如何在Mysql中更改存储过程.

DROP PROCEDURE IF EXISTS sp_Country_UPDATE; 
CREATE PROCEDURE sp_Country_UPDATE 
  ( IN p_CountryId int, 
    IN p_CountryName nvarchar(25), 
    IN p_CountryDescription nvarchar(25), 
    IN p_IsActive bit, 
    IN p_IsDeleted bit ) 
  UPDATE 
    Country 
  SET 
    CountryName = p_CountryName , 
    CountryDescription=p_CountryDescription, 
    IsActive= p_IsActive, 
    IsDeleted=p_IsDeleted 
  WHERE 
    CountryId = p_CountryId ;
Run Code Online (Sandbox Code Playgroud)

如何更改此存储过程?

Pet*_*ete 15

如果您的意思是要编辑过程,那么您不能根据MySQL文档:

此语句可用于更改存储过程的特征.可以在ALTER PROCEDURE语句中指定多个更改.但是,您无法使用此语句更改存储过程的参数或主体; 要进行此类更改,您必须使用DROP PROCEDURE和CREATE PROCEDURE删除并重新创建该过程.

使用Altersyntaax可以更改"特征",但不能更改实际的过程本身

http://dev.mysql.com/doc/refman/5.0/en/alter-procedure.html

这是创建,修改(注释)然后删除和重新创建的示例:

DROP PROCEDURE myFunc;

DELIMITER //

CREATE PROCEDURE myFunc ()
COMMENT 'test'
BEGIN
SELECT 5;
END //

DELIMITER ;

ALTER PROCEDURE myFunc
COMMENT 'new comment';

CALL myFunc();

DROP PROCEDURE myFunc;

DELIMITER //

CREATE PROCEDURE myFunc ()
COMMENT 'last time'
BEGIN
SELECT 6;
END //

DELIMITER ;

CALL myFunc();
Run Code Online (Sandbox Code Playgroud)

以上CALL myFunc()陈述将返回5然后6.

查看存储过程会显示"test","new comment"或"last time"的注释,具体取决于您查看过程主体的时间(我不确定如何通过CLI查看注释但我可以在Navicat中的函数选项卡)


小智 -8

这就是你创建的方式

CREATE PROCEDURE GetAllProducts()
BEGIN
SELECT *  FROM products;
END //
Run Code Online (Sandbox Code Playgroud)

这就是你改变的方式

Alter PROCEDURE GetAllProducts()
BEGIN
SELECT *  FROM products;
END //
Run Code Online (Sandbox Code Playgroud)