如何在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 ;

如何更改此存储过程?

最佳答案

如果你想编辑程序,那么你不能根据mysql文档:
此语句可用于更改存储过程的特性。在alter procedure语句中可以指定多个更改。但是,不能使用此语句更改存储过程的参数或主体;要进行此类更改,必须使用DROP PROCEDURE和CREATE PROCEDURE删除并重新创建该过程。
Alter语法允许您更改“特征”,但不允许更改实际过程本身。
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();

以上CALL myFunc()语句将返回5,然后返回6。
查看存储过程将根据查看过程主体的时间显示“test”、“new comment”或“last time”注释(我不确定如何通过CLI查看注释,但可以在navicat的“函数”选项卡中看到它们)。

关于mysql - 如何在mysql中更改存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13970258/

10-14 19:24
查看更多