mysql中修改存儲過程的命令是“ALTER PROCEDURE”,語法格式為“ALTER PROCEDURE 存儲過程名 [ 特征 … ]”,特征的可能取值為CONTAINS SQL、NO SQL、INVOKER、DEFINER等等。
(推薦教程:mysql視頻教程)
在實際開發(fā)過程中,業(yè)務需求修改的情況時有發(fā)生,所以修改 MySQL 中的存儲過程是不可避免的。
MySQL 中通過 ALTER PROCEDURE 語句來修改存儲過程。本節(jié)將詳細講解修改存儲過程的方法。
MySQL 中修改存儲過程的語法格式如下:
ALTER?PROCEDURE?存儲過程名?[?特征?...?]
特征指定了存儲過程的特性,可能的取值有:
-
CONTAINS SQL 表示子程序包含 SQL 語句,但不包含讀或?qū)憯?shù)據(jù)的語句。
-
NO SQL 表示子程序中不包含 SQL 語句。
-
READS SQL DATA 表示子程序中包含讀數(shù)據(jù)的語句。
-
MODIFIES SQL DATA 表示子程序中包含寫數(shù)據(jù)的語句。
-
SQL SECURITY { DEFINER |INVOKER } 指明誰有權限來執(zhí)行。
-
DEFINER 表示只有定義者自己才能夠執(zhí)行。
-
INVOKER 表示調(diào)用者可以執(zhí)行。
-
COMMENT ‘String’ 表示注釋信息。
實例 1
下面修改存儲過程 showstuscore 的定義,將讀寫權限改為 MODIFIES SQL DATA,并指明調(diào)用者可以執(zhí)行,代碼如下:
mysql>?ALTER?PROCEDURE?showstuscore?MODIFIES?SQL?DATA?SQL?SECURITY?INVOKER; Query?OK,?0?rows?affected?(0.01?sec)
執(zhí)行代碼,并查看修改后的信息,運行結果如下:
mysql>?SHOW?CREATE?PROCEDURE?showstuscore?G ***************************?1.?row?*************************** ???????????Procedure:?showstuscore ????????????sql_mode:?STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ????Create?Procedure:?CREATE?DEFINER=`root`@`localhost`?PROCEDURE?`showstuscore`() ????MODIFIES?SQL?DATA ????SQL?SECURITY?INVOKER BEGIN SELECT?id,name,score?FROM?studentinfo; END character_set_client:?gbk collation_connection:?gbk_chinese_ci ??Database?Collation:?latin1_swedish_ci 1?row?in?set?(0.00?sec)
結果顯示,存儲過程修改成功。從運行結果可以看到,訪問數(shù)據(jù)的權限已經(jīng)變成了 MODIFIES SQL DATA,安全類型也變成了 INVOKE。
提示:ALTER PROCEDURE 語句用于修改存儲過程的某些特征。如果要修改存儲過程的內(nèi)容,可以先刪除原存儲過程,再以相同的命名創(chuàng)建新的存儲過程;如果要修改存儲過程的名稱,可以先刪除原存儲過程,再以不同的命名創(chuàng)建新的存儲過程。
相關推薦:mysql視頻教程