当前位置:首页 > 芯闻号 > 充电吧
[导读]今天继续我们的SQL菜鸟教程,上篇博客说了说触发器(SQL菜鸟入门级教程之触发器),今天我们来说说存储过程。其实,触发器也属于存储过程,只不过它比较特殊。下面切入正题,让我带领众菜鸟们一起学习一下存储

今天继续我们的SQL菜鸟教程,上篇博客说了说触发器(SQL菜鸟入门级教程之触发器),今天我们来说说存储过程。其实,触发器也属于存储过程,只不过它比较特殊。下面切入正题,让我带领众菜鸟们一起学习一下存储过程。


存储过程简介


  存储过程(Stored Procedure)是数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
在数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。


存储过程的分类


1系统存储过程


  以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。


2本地存储过程


  用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,这跟各种编程语言里用户自己写的函数非常类似。我们一般所说的存储过程就是指本地存储过程。今天我们重点介绍本地存储过程,其他存储过程了解即可。


3临时存储过程


  分为两种存储过程:
  一是本地临时存储过程,以“#”开头,这样的存储过程就是存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;
  二是全局临时存储过程,以“##”开头,这样的存储过程就是存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。


4远程存储过程


  在SQL Server2005中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。


5扩展存储过程


  扩展存储过程(Extended Stored Procedures)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。


创建存储过程的基本代码结构:


-- 创建存储过程
CREATE PROCEDURE Procedure_Name  --Procedure_Name为存储过程名(不能以阿拉伯数字开头),在一个数据库中触发器名是唯一的。名字的长度不能超过个字。PROCEDURE可以简写为PROC。
(   
    -- 创建全局变量
    -- @Param1和@Param2为存储过程的参数,Datatype为参数类型,多个参数用逗号隔开,最多允许个参数。   
    @Param1 Datatype,
    @Param2 Datatype,       -- @Param1、@Param2默认为输入变量  
    @Param3 Datatype OUTPUT  -- @Param3为输出变量
)    
AS --存储过程要执行的操作 

BEGIN
    
    --BEGIN跟END组成一个代码块,可以写也可以不写,如果存储过程中执行的SQL语句比较复杂,用BEGIN和END会让代码更加整齐,更容易理解。
	
	-- 设置局部变量
	DECLARE @Param4 Datatype;
	
END
GO --GO就代表结操作完毕  

exec Procedure_Name [参数名] --调用存储过程Procedure_Name。

drop procedure Procedure_Name --删除存储过程Procedure_Name,不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

show procedure status --显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

show create procedure Procedure_Name --显示存储过程Procedure_Name的详细信息

exec sp_helptext Procedure_Name --显示你这个Procedure_Name这个对象创建文本



优点


  1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

  2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

  3.存储过程可以重复使用,可减少数据库开发人员的工作量(复用性高,面向对象的编程思想)

  4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权


缺点


  1.调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。

  2.移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。

  3.重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

  4.如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。


世间所有事物都有两面性,没有绝对好的东西,也没有绝对不好的东西。存储过程既有它的优点也有缺点,我们不能盲目的完全使用存储过程,也不能将其打入冷宫不去用。根据具体的项目,根据实际情况去决定如何使用存储过程,最重要的就是不要过度,平衡就好。

具体该怎么权衡,不是我在这里说一句两句就能解决的,必须亲自去实践中体会,慢慢的就能够掌握其中的火候。最后祝各位和我一样的菜鸟早日成为大牛。笨鸟亦可先飞!


我本人对本篇博客中的“创建存储过程的基本代码结构:”部分做出过部分修改。

原文网址链接:菜鸟从零学习数据库(三)——存储过程



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭