MySQL——修改、删除存储过程和函数

1.  修改存储过程和函数

    使用  ALTER  语句可以修改存储过程或函数的特性,语法格式如下:

    ALTER   {  PROCEDURE  |  FUNCTION  }  sp_name  [  characteristic  ...  ]   

    其中,那  sp_name 参数表示存储过程或函数的名称;characteristic 参数指定存储函数的特性,可能的取值有:

  •     CONTAINS SQL  表示子程序包含  SQL 语句,但不包含读或写数据的语句。
  •     NO  SQL  表示了程序中不包含 SQL 语句。
  •     READS  SQL DATA  表示子程序中包含读数据的语句。
  •     MODIFIES  SQL DATA  表示子程序中包含写数据的语句。
  •     SQL  SECURITY  {  DEFINER  |   INVOKER  } 指明谁有权限来执行。
  •     DEFINER  表示只有定义者自己才能够执行。
  •     INVOKER 表示调用者可以执行。
  •     COMMENT  'string'  表示注释信息。

    【注】修改存储过程使用   ALTER PROCEDURE  语句,修改存储函数使用  ALTER  FUNCTION  语句,这两个语句的结构是一样的,语句中的所有参教也是一样的,而且,它们与创建存储过程或函数的语句中的参数基本也是一样的,

    【例】修改存储过程  CountProc 的定义,将读写权限改为  MODIFIES SQL DATA,并指明调用者可以执行。

修改之前:

mysql> SELECT   SPECIFIC_NAME  ,SQL_DATA_ACCESS  , SECURITY_TYPE
    -> FROM  information_schema.Routines
    -> WHERE  ROUTINE_NAME = 'CountProc1' AND  ROUTINE_TYPE = 'PROCEDURE';
+---------------+-----------------+---------------+
| SPECIFIC_NAME | SQL_DATA_ACCESS | SECURITY_TYPE |
+---------------+-----------------+---------------+
| CountProc1    | CONTAINS SQL    | DEFINER       |
+---------------+-----------------+---------------+

修改语句:

mysql> ALTER  PROCEDURE  CountProc1
    -> MODIFIES  SQL  DATA
    -> SQL  SECURITY  INVOKER;
Query OK, 0 rows affected (0.00 sec)

查看执行结果:

mysql> SELECT   SPECIFIC_NAME  ,SQL_DATA_ACCESS  , SECURITY_TYPE
    -> FROM  information_schema.Routines
    -> WHERE  ROUTINE_NAME = 'CountProc1' AND  ROUTINE_TYPE = 'PROCEDURE';
+---------------+-------------------+---------------+
| SPECIFIC_NAME | SQL_DATA_ACCESS   | SECURITY_TYPE |
+---------------+-------------------+---------------+
| CountProc1    | MODIFIES SQL DATA | INVOKER       |
+---------------+-------------------+---------------+
1 row in set (0.00 sec)


2.  删除存储过程和函数

    删除存储过程和函数可以使用  DROP 语句,其语法结构如下:

    DROP   {  PROCEDURE  |   FUNCTION   }   [  IF EXISTS ]    Sp_name

    sp_name  为要移除的存储过程或函数的名称。

    IF EXISTS  子句是  MySQL  的一个扩展。如果程序或函数不存储,它可以防止发生错误,产生一个用  SHOW WARNINGS 查看的警告。

    【例】删除存储过程和存储函数。代码如下:

mysql> DROP  PROCEDURE  CountProc;
Query OK, 0 rows affected (0.50 sec)
mysql> DROP  FUNCTION  CountProc2;
Query OK, 0 rows affected (0.00 sec)

【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版

你可能感兴趣的:(MySQL)