18

如何更改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 ;

如何更改此存储过程?

4

3 回答 3

21

如果您的意思是要编辑过程,那么您不能根据 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。

查看存储过程将显示“测试”、“新评论”或“上次”的评论,具体取决于您查看程序正文的时间(我不确定如何通过 CLI 查看评论,但我可以在Navicat中的功能选项卡)

于 2016-03-03T10:09:54.647 回答
1
ALTER PROCEDURE proc_name [characteristic ...]

characteristic:
    COMMENT 'string'
  | LANGUAGE SQL
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
于 2014-04-07T12:41:23.790 回答
-8

这就是你创造的方式

CREATE PROCEDURE GetAllProducts()
BEGIN
SELECT *  FROM products;
END //

这就是你改变的方式

Alter PROCEDURE GetAllProducts()
BEGIN
SELECT *  FROM products;
END //
于 2012-12-20T10:56:41.277 回答