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!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

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

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...