MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLストアド関数を変更するにはどうすればよいですか?


ALTER ROUTINE権限がある場合は、ALTERFUNCTIONクエリを使用して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ステートメントは、上記の構文で定義されたストアド関数の特性を変更できます。 ALTERFUNCTIONステートメントで複数の変更を指定できます。ただし、このステートメントで関数のパラメーターまたは本体を変更することはできません。これを説明するために、次の例では関数名「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クエリから、関数「階乗」の定義にコメントが追加されていることは明らかです。


  1. MySQLストアド関数をデータベースから削除するにはどうすればよいですか?

    ALTER ROUTINE権限がある場合は、DROP FUNCTIONステートメントを使用して、MySQLストアド関数を削除できます。その構文は次のようになります- 構文 DROP FUNCTION [IF EXISTS] function_name ここで、function_nameは、データベースから削除する関数の名前です。 例 mysql> DROP FUNCTION if exists Hello1; Query OK, 0 rows affected (0.70 sec) 関数を削除した後、CREATE FUNCTIONステートメントを確認すると、次のようなエラーが発生します

  2. MySQLに保存されたGENERATEDCOLUMNSを追加するためにテーブルを変更するにはどうすればよいですか?

    MySQLに格納されたGENERATEDCOLUMNSをテーブルに追加する場合、データ型の後に「AS(expression)」を追加するだけで列を追加するのと同じ構文を使用できます。その構文は次のようになります- 構文 ALTER TABLE table_name ADD COLUMN column_name AS(expression)STORED; 例 mysql> ALTER TABLE employee_data_stored ADD COLUMN FULLName Varchar(200) AS (CONCAT_WS(" ", 'First_name