Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào chúng ta có thể thay đổi một hàm được lưu trữ trong MySQL?


Nếu chúng ta có đặc quyền ALTER ROUTINE thì chúng ta có thể thay đổi hàm được lưu trữ trong MySQL với sự trợ giúp của truy vấn ALTER FUNCTION. Cú pháp của nó như sau -

Cú pháp

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

Đây function_name là tên của hàm mà chúng tôi muốn thay đổi.

Câu lệnh ALTER FUNCTION có thể thay đổi các đặc tính, được định nghĩa ở trên trong cú pháp, của một hàm được lưu trữ. Chúng ta có thể chỉ định nhiều thay đổi trong câu lệnh ALTER FUNCTION. Nhưng chúng ta không thể thay đổi các tham số hoặc nội dung của hàm bằng câu lệnh này. Để minh họa điều đó, chúng tôi sẽ thêm các chú thích vào tên hàm 'giai thừa' trong ví dụ sau -

Ví dụ

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)

Từ truy vấn CREAT FUNCTION, rõ ràng là Nhận xét đã được thêm vào định nghĩa của hàm 'giai thừa'.