关闭
关闭
首页 > 嵌入式硬件 > 存储技术
存储过程简介本文引用地址: http://embed.21ic.com/hardware/storage/201712/49886.html 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。 存储过程通常有以下优点: (1)存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2)存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3)存储过程能实现较快的执行速度。如果某一操作包含大量的TransacTIon-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的TransacTIon-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4)存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的TransacTIon-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。 (5)存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。  
1.jpg
MySQL存储过程的创建 (1) 格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,。..]]) [特性 。..] 过程体 这里先举个例子: 1. mysql> DELIMITER // 2. mysql> CREATE PROCEDURE proc1(OUT s int) 3. -> BEGIN 4. -> SELECT COUNT(*) INTO s FROM user; 5. -> END 6. -> // 7. mysql> DELIMITER ; 注: (1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以“;”为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将“;”当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。 (2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用“,”分割开。 (3)过程体的开始与结束使用BEGIN与END进行标识。 这样,我们的一个MySQL存储过程就完成了,是不是很容易呢?看不懂也没关系,接下来,我们详细的讲解。 (2) 声明分割符 其实,关于声明分割符,上面的注解已经写得很清楚,不需要多说,只是稍微要注意一点的是:如果是用MySQL的Administrator管理工具时,可以直接创建,不再需要声明。 (3)参数 MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如: CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形。..]) IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值 OUT 输出参数:该值可在存储过程内部被改变,并可返回 INOUT 输入输出参数:调用时指定,并且可被改变和返回 Ⅰ、 IN参数例子 创建: 1. mysql >DELIMITER // 2. mysql > CREATE PROCEDURE demo_in_parameter(IN p_in int) 3. -> BEGIN 4. -> SELECT p_in; 5. -> SET p_in=2; 6. -> SELECT p_in; 7. -> END; 8. -> // 9. mysql > DELIMITER ; 执行结果: 1. mysql > SET @p_in=1; 2. mysql > CALL demo_in_parameter(@p_in); 3. +------+ 4. | p_in | 5. +------+ 6. | 1 | 7. +------+ 8. 9. +------+ 10. | p_in | 11. +------+ 12. | 2 | 13. +------+ 14. 15. mysql> SELECT @p_in; 16. +-------+ 17. | @p_in | 18. +-------+ 19. | 1 | 20. +-------+ 以上可以看出,p_in虽然在存储过程中被修改,但并不影响@p_id的值 Ⅱ、OUT参数例子 创建: 1. mysql > DELIMITER // 2. mysql > CREATE PROCEDURE demo_out_parameter(OUT p_out int) 3. -> BEGIN 4. -> SELECT p_out; 5. -> SET p_out=2; 6. -> SELECT p_out; 7. -> END; 8. -> // 9. mysql > DELIMITER ; 执行结果: 1. mysql > SET @p_out=1; 2. mysql > CALL sp_demo_out_parameter(@p_out);
 1/4    1 2 3 4 下一页 尾页
换一批

延伸乐虎国际娱乐手机版

[真心话] MySQL 创始人:写代码比打游戏还爽,程序员应该多泡开源社区

MySQL 创始人:写代码比打游戏还爽,程序员应该多泡开源社区Monty是一位编程天才。19岁的时候,他从赫尔辛基理工大学辍学开始全职工作,因为大学已经没有什么东西可以教他了。在独自一人写完除了一个库以外的全部代码之后,33岁时,他发布了MySQL,后来后者成为了全世界最流行的开源数据库。55岁时,他......关键字:MySQL 程序员 开源社区

[新鲜事] 中东土豪出手:ARM/AMD/GF将有个共同的“爸爸”

中东土豪出手:ARM/AMD/GF将有个共同的“爸爸”据报道,软银公司计划将ARM 25%的股权出售给它创立的1000亿美元投资基金Vision Fund,而阿布扎比政府资助的投资集团Mubadala计划向该基金注资150亿美元来完成目标。......关键字:ARM AMD GF 阿联酋

[新鲜事] 5G商用关键设备开发完成:准备大规模普及

5G商用关键设备开发完成:准备大规模普及三星最新宣布用于下一代通信基站和其他接入设备当中的5G RF集成电路已经做好了商业化使用准备,这将是5G网络大规模建设的一个里程碑。......关键字:5G 三星

[新鲜事] 360手机去年销量突破500万 发新品N5依然坚持性价比

360手机去年销量突破500万 发新品N5依然坚持性价比昨日,360手机推出旗下年度主力机型360手机N5,首次加入其研发的应用启动加速、多任务管理和应用多开功能。价格在1500左右,其中32GB版本售价1399元,64GB售价1599元。......关键字:360手机 N5

[新鲜事] 宽带垄断痼疾背后隐藏的暴利产业链

宽带垄断痼疾背后隐藏的暴利产业链上周,中国联通两家地方分公司因实施垄断行为被处罚,再次将宽带垄断话题提到公众面前。......关键字:宽带 垄断

[疯狂史] 惊出一身冷汗 一颗小行星直奔地球而来

惊出一身冷汗 一颗小行星直奔地球而来 据美国航天局近日发布消息称,4月19日,一颗直径约650米的近地小行星将以近180万公里的距离“擦”过地球,这两天晚上人们借助小型光学望远镜就可以观测到这个“天外来客”。......关键字:行星 地球

[破谣言] 人类的粪便竟然能变成黄金?!

人类的粪便竟然能变成黄金?!对黄金这种物质从古代开始人们已经意识到它的价值,甚至黄金储备量也成为衡量一个国家综合实力的标准。在科学不那么昌明的时代,人们总想通过一些简洁的方法获取黄金,甚至还诞生了一门专门的学科,炼金术。......关键字:粪便 炼金术
条评论

我 要 评 论

网友评论

大家都爱看

  • 兆易创新研发14nm嵌入式异构AI芯片

    昨日,兆易创新发表公告,重申了收购上海思立微的目的。兆易创新表示,这次产业并购,旨在整合境内优质的芯片设计领域资产,获取智能人机交互领域的核心技术,拓展并丰富公司产品线,在整体上形… 2018-01-31
  • 华为的优势,就是自家的各种自研芯片

    CPU即中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
    2017-08-16
  • 你不知道Ryzen芯片有多火?来看看AMD的股票吧

    据外媒报道,美银美林认为,AMD最新的Ryzen芯片可能会引发一波销售浪潮,进而推动该股继续上涨。它认为AMD股票还有40%以上的上涨空间。

    2017-08-16
  • 国产芯片:厚积薄发,强势崛起

    关于国产芯片,是近几年才有崛起的势头,可是在几年之前,国产芯片还处于“沉睡”的状态,尤其是手机芯片,几乎大部分都依赖进口,而且国外的市场几乎被高通和联发科所垄断,也就展讯还在市场边… 2017-08-16
  • 为了数据安全 大疆无人机增加隐私飞行功能

    大疆周一表示,在美国陆军因为“网络缺陷”而要求其成员停用大疆无人机后,这家中国无人机制造商将加强无人机的数据安全性。 大疆政策和法务副总裁布伦丹&middot… 2017-08-15