2013-12-11 47 views
0

我創建了一個存儲過程使用ALTER編輯存儲過程?

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

現在我想一個參數添加到這個存儲過程是這樣的:

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

如何編輯我的存儲過程?

回答

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刪除並重新創建程序

+0

我們可以使用alter查詢? –

+0

'@ peterm'有沒有其他的選擇? ALTER? –

+2

@naveengoyal不,在這種情況下不能使用'ALTER'。 [* ...使用此語句*不能更改存儲過程的參數或主體**](http://dev.mysql.com/doc/refman/5.0/en/alter-procedure.html) – peterm

1

刪除程序

drop procecdure GetAllRecords// 

並重新創建

CREATE PROCEDURE GetAllRecords(id1 INT(4)) ... 
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

0

改變一個存儲過程檢查此鏈接

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

最好的辦法是刪除存儲proceure並重新創建它

DROP PROCEDURE IF EXISTS GetAllRecords 

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

OP是使用MySQL而不是SQL Server,所以你提供的鏈接是無用的。你的答案中的代碼看起來很熟悉...... – peterm