读书频道 > 网站 > 网页设计 > MySQL入门很简单
14.4 修改存储过程和函数
12-07-31    叶孤城
收藏    我要投稿   

本文所属图书 > MySQL入门很简单

本书从初学者的角度出发,由浅入深,循序渐进地介绍了MySQL数据库应用与开发的相关知识。书中提供了大量操作MySQL数据库的示例,还提供了大量实例和上机实践内容,供读者演练。本书共分5篇。第1篇介绍数据库的基...立即去当当网订购
修改存储过程和函数是指修改已经定义好的存储过程和函数。MySQL中通过ALTER PROCEDURE语句来修改存储过程。通过ALTER FUNCTION语句来修改存储函数。本小节将详细讲解修改存储过程和函数的方法。
 
MySQL中修改存储过程和函数的语句的语法形式如下:
 
ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...] 
characteristic: 
{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 
| SQL SECURITY { DEFINER | INVOKER } 
| COMMENT 'string'
其中,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语句。但是,这两个语句的结构是一样的,语句中的所有参赛都是一样的。而且,它们与创建存储过程或函数的语句中的参数也是基本一样的。
 
【示例14-24】 下面修改存储过程num_from_employee的定义。将读写权限改为MODIFIES SQL DATA,并指明调用者可以执行。代码执行如下:
 
ALTER  PROCEDURE  num_from_employee 
      MODIFIES SQL DATA 
          SQL SECURITY INVOKER ;
执行代码,并查看修改后的信息。结果显示如下:
 
//执行ALTE PROCEDURE语句 
mysql> ALTER  PROCEDURE  num_from_employee 
    -> MODIFIES SQL DATA 
    -> SQL SECURITY INVOKER ; 
Query OK, 0 rows affected (0.00 sec) 
//查询修改后num_from_employee表的信息 
mysql> SELECT SPECIFIC_NAME,SQL_DATA_ACCESS,
SECURITY_TYPE FROM informa- 
tion_schema.Routines WHERE ROUTINE_NAME='num_from_employee' ; 
+-------------------------------+-------------
---------------------+-------------------------+ 
| SPECIFIC_NAME     | SQL_DATA_ACCESS   | SECURITY_TYPE | 
+-------------------------------+------------
----------------------+-------------------------+ 
| num_from_employee  | MODIFIES SQL DATA   | INVOKER        | 
+-------------------------------+-----------
-----------------------+-------------------------+ 
1 row in set (0.00 sec)
结果显示,存储过程修改成功。从查询的结果可以看出,访问数据的权限(SQL_DATA_ACCESS)已经变成MODIFIES SQL DATA,安全类型(SECURITY_TYPE)已经变成了INVOKER。
 
【示例14-25】 下面修改存储函数name_from_employee的定义。将读写权限改为READS SQL DATA,并加上注释信息'FIND NAME'。代码执行如下:
 
ALTER  FUNCTION  name_from_employee 
          READS SQL DATA 
          COMMENT 'FIND NAME' ;
执行代码,并查看修改后的信息。结果显示如下:
 
//执行ALTE FUNCTION语句 
mysql> ALTER  FUNCTION  name_from_employee 
    -> READS SQL DATA 
    -> COMMENT 'FIND NAME' ; 
Query OK, 0 rows affected (0.00 sec) 
//查询修改后num_from_employee表的信息 
mysql> SELECT SPECIFIC_NAME,SQL_DATA_ACCESS,
ROUTINE_COMMENT FROM information_schema.Routines
WHERE ROUTINE_NAME='name_from_employee' ; 
+--------------------------------+--------------
-----------------+-------------------------------+ 
| SPECIFIC_NAME      | SQL_DATA_ACCESS | ROUTINE_COMMENT | 
+--------------------------------+-------------
------------------+-------------------------------+ 
| name_from_employee  | READS SQL DATA   | FIND NAME          | 
+--------------------------------+----------------
---------------+-------------------------------+ 
1 row in set (0.01 sec)
结果显示,存储函数修改成功。从查询的结果可以看出,访问数据的权限(SQL_DATA_ACCESS)已经变成READS SQL DATA,函数注释(ROUTINE_COMMENT)已经变成了"FIND NAME"。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站