Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีแก้ไข (ALTER) MySQL Stored Function


หากเรามีสิทธิ์ ALTER ROUTINE เราสามารถแก้ไข MySQL Stored Function ได้ด้วยคำสั่ง ALTER FUNCTION ไวยากรณ์มีดังนี้:

ไวยากรณ์

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

ที่นี่ function_name คือชื่อของ Function ที่เราต้องการแก้ไข

คำสั่ง ALTER FUNCTION สามารถเปลี่ยนแปลง Characteristics ที่กำหนดไว้ในไวยากรณ์ข้างต้นของ Stored Function ได้ เราสามารถระบุการเปลี่ยนแปลงมากกว่าหนึ่งอย่างในคำสั่ง ALTER FUNCTION เดียวได้ แต่เราไม่สามารถเปลี่ยนพารามิเตอร์หรือ Body ของ Function ด้วยคำสั่งนี้ได้ เพื่อสาธิต เราเพิ่ม Comment ใน 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)

จากคำสั่ง CREATE FUNCTION ข้างต้น ชัดเจนว่า Comment ถูกเพิ่มเข้าไปในนิยามของ Function factorial