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

MySQLストアドプロシージャを変更するにはどうすればよいですか?


プロシージャに対するALTERROUTINE権限がある場合は、 ALTER PROCEDUREを使用します。 MySQLストアドプロシージャを変更できるステートメント。これを示すために、「delete_studentinfo」という名前のストアドプロシージャの例を取り上げます。このストアドプロシージャには、次のステートメントが作成されます-

mysql> SHOW CREATE PROCEDURE Delete_studentinfo\G
*************************** 1. row ***************************
           Procedure: Delete_studentinfo
            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 Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_studentinfo`( IN p_id INT)
BEGIN
DELETE FROM student_info
WHERE ID=p_id;
END
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.01 sec)

上記の結果セットでは、ストアドプロシージャ「delete_studentinfo」にコメントがないことは明らかです。これで、ALTER PROCEDUREステートメントを使用して、次のようにコメントを追加できます-

mysql> ALTER PROCEDURE Delete_studentinfo
   -> COMMENT 'deleting the record'//
Query OK, 0 rows affected (0.03 sec)

これで、次のクエリの結果セットを使用して、ストアドプロシージャにコメントが追加されたことを確認できます-

mysql> SHOW CREATE PROCEDURE Delete_studentinfo\G
*************************** 1. row ***************************
           Procedure: Delete_studentinfo
            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 Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_studen
tinfo`( IN p_id INT)
   COMMENT 'deleting the record'
BEGIN
DELETE FROM student_info
WHERE ID=p_id;
END
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)

  1. 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_na

  2. テーブルを作成するためのMySQLストアドプロシージャ?

    以下は、テーブルを作成するストアドプロシージャを作成するためのクエリです。ここでは、3つの列を持つテーブルを作成しています。そのうちの1つはId-です。 mysql> DELIMITER //    mysql> CREATE PROCEDURE Stored_Procedure_CreatingTable()    BEGIN       create table DemoTable       (       Id int NOT NULL AUTO