Sql Server 存储过程实例讲解

  次阅读 来源:互联网(转载协议) 2016-02-17 13:44 我要评论(0)

一、遇到的问题

我们在之前学习的课程写了不少的批处理语句,这些批处理语句存在两个问题:

1.没法像函数那样传参数运行(自定义化)

2.没法像函数那样可以反复地调用(功能化模块化)

说到这里,我们可以猜到,数据库中应该可以建立函数形式的数据库对象来解决这样的问题。但是介绍这种数据库对象之前,我们再来看几个需要解决的问题:

我们已经学会把一条select语句封装在视图中,但是它只能用来查询,如果我们希望进行其它操作,比如增删改记录、建删库表等,是不能用视图来完成的。

另一方面,如果把一个带有更改操作的批处理整个存储成数据库对象,还可以把处理数据的程序移动到离数据尽可能近的地方,而不是总把这些操作写在客户端程序(如Java、C#)中。通过将处理数据的程序从客户应用程序移动到服务器,可以降低网络流量,并提高性能和数据的完整性。

二、存储过程的概念

解决上面的问题,我们可以使用一种叫做“存储过程”的数据库对象。

存储过程(Stored Procedure)把我们经常用到的一串复杂sql语句保存成一个数据库对象,并给它起一个名字。每次使用存储过程只需要使用如下的形式即可:

exec proc 存储过程名

存储过程还可以带参数运行:

exec proc 存储过程名 参数值[, 参数值...]

?存储过程并不神秘,它就是批处理。之前提到视图是保存在服务器上的命名select语句,与之类似,存储过程是保存在服务器上的命名批处理,系统将预先对它进行编译。

? 存储过程可以包含几乎所有的T-SQL语句,如数据存取语句、流程控制语句、错误处理语句等,使用起来弹性很大。

? 数据库中也存在着系统函数和用户定义函数 这两种对象,用户定义函数的功能和存储过程很像,但是有一定的区别。

【存储过程的分类】

- 系统存储过程 system stored procedure 前缀sp_ 例如sp_help sp、helpdb

- 扩展存储过程 extended stored procedure 前缀xp_ 例如xp_cmdshell

- 用户自定义存储过程 user-defined stored procedure 也就是我们自己创建的

三、用户自定义存储过程的创建、修改、删除

【创建存储过程】

create proc 存储过程名 --无参数的存储过程

as

批处理语句

go

【修改存储过程】

alter proc 存储过程名 --无参数的存储过程

as

批处理语句

go

可以看到,修改存储过程的语法和创建的语法只差一个单词,把create换成alt即可。

【删除存储过程】

drop proc 存储过程名

我们还可使用managementstudio来管理存储过程,展开菜单树中的“可编程性”,在“存储过程”的子节点中可以进行各种操作。这里要说一下创建:当点击“新建存储过程”之后,会出现一个基于模板的创建语句。这时点击菜单中的“查询→指定模板参数的值”,即可弹出对话框来对模板进行设置,从而建立我们想要的存储过程。另外,点击菜单中的“视图→模板资源管理器”,可以看到SQLSERVER为我们提供的各种SQL语句模板。

【一个简单的例子】

--插入一个以时间为用户名的用户

create proc insUser

as

begin tran

declare @username varchar(20)

set @username=convert(varchar(8),getdate(),112)

+replace(convert(varchar(10),getdate(),8),':','')

if not exists(select * from yonghu where yonghuming=@username)

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 长虹新款智能语音空调,告诉你空调也能玩Siri

    长虹新款智能语音空调,告诉你空调也能玩Siri

  • 让AI触手可及  Qualcomm携手创通联达推出全新终端侧AI开发套件

    让AI触手可及 Qualcomm携手创通联达推出全新终端侧AI开发套件

  • 第一批国家重点研发计划公布,旷视科技开启“五年行动”

    第一批国家重点研发计划公布,旷视科技开启“五年行动”

  • 品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

    品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...