Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

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' 함수의 정의에 Comment가 추가되었음을 알 수 있습니다.