我們如何修改 MySQL 儲存函式?


如果我們有 ALTER ROUTINE 許可權,那麼我們可以藉助 ALTER FUNCTION 查詢修改 MySQL 儲存函式。其語法如下 −

語法

ALTER FUNCTION function_name [characteristic ...]
characteristic:
   { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'

此處 function_name 是我們想要修改的函式的名稱。

ALTER FUNCTION 語句可以更改儲存函式在上述語法中定義的特徵。我們可以在 ALTER FUNCTION 語句中指定多個更改。但是,我們無法使用此語句更改函式的引數或函式體。為了說明這一點,我們在以下示例中在函式名“factorial”中添加了註釋 −

示例

mysql> ALTER FUNCTION factorial COMMENT 'Can accept fraction values';
Query OK, 0 rows affected (0.00 sec)

mysql> Show Create Function factorial\G
*************************** 1. row ***************************
       Function: factorial
       sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `factorial`(n DECIMAL(3,0)) RETURNS decimal(20,0)
DETERMINISTIC
COMMENT 'Can accept fraction values'
BEGIN
DECLARE factorial DECIMAL(20,0) DEFAULT 1;
DECLARE counter DECIMAL(3,0);
SET counter = n;
      factorial_loop: REPEAT
SET factorial = factorial * counter;

SET counter = counter - 1;
   UNTIL counter = 1
END REPEAT;
   RETURN factorial;
END

character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)

從 CREAT FUNCTION 查詢中可以清楚地看出,註釋已新增到函式“factorial”的定義中。

更新於:22-06-2020

288 次瀏覽

開啟職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.