使用ALTER编辑存储过程?

时间:2013-12-11 06:14:28

标签: mysql sql stored-procedures

我创建了一个存储过程

CREATE PROCEDURE GetAllRecords()  
   BEGIN  
   SELECT *  FROM my_table;  
   END //

现在我想在此存储过程中添加一个参数,如下所示:

CREATE PROCEDURE GetAllRecords(id1 INT(4))  
   BEGIN  
   SELECT *  FROM my_table WHERE `id` = id1;  
   END //

如何编辑存储过程?

4 个答案:

答案 0 :(得分:1)

删除程序

drop procecdure GetAllRecords//

重新创建

CREATE PROCEDURE GetAllRecords(id1 INT(4)) ...

答案 1 :(得分:0)

首先删除程序,然后重新创建

DROP PROCEDURE IF EXISTS GetAllRecords;
CREATE PROCEDURE GetAllRecords(IN _id INT)
  SELECT * 
    FROM my_table WHEREid = _id;

由于你在程序中使用了唯一的语句,你可以抛弃BEGIN ... END阻止并使用通常的分隔符。

如果你想知道在这种情况下你不能使用ALTER PROCEDURE

  

此语句可用于更改存储的特征   程序。但是,您无法更改参数或正文   使用此语句的存储过程;做出这样的改变,你   必须使用DROP PROCEDURECREATE PROCEDURE删除并重新创建该过程。

答案 2 :(得分:0)

首先,这不是如何在存储过程中传递参数的方法。 您无法更改存储过程,执行此操作的方法是删除现有文件并创建新文件。

DELIMITER $$

DROP PROCEDURE IF EXISTS GetAllRecords$$
CREATE PROCEDURE GetAllRecords(IN param1 INT, OUT pram2 Varchar(100), INOUT param3 Date)

BEGIN
select * from <tbl>;
< Your queries>
END$$

DELIMITER ;

有关存储过程的完整详细信息 请点击链接

http://net.tutsplus.com/tutorials/an-introduction-to-stored-procedures/

http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.pdf

答案 3 :(得分:0)

要更改存储过程,请选中此链接

http://technet.microsoft.com/en-us/library/ms345356.aspx

最好的方法是删除存储的过程并再次创建

DROP PROCEDURE IF EXISTS GetAllRecords

CREATE PROCEDURE GetAllRecords(IN _id INT)
AS 
BEGIN
  SELECT * 
    FROM my_table WHEREid = _id;
END