tsql存储过程和游标

tsql存储过程和游标

ID:34726510

大小:157.18 KB

页数:19页

时间:2019-03-10

tsql存储过程和游标_第1页
tsql存储过程和游标_第2页
tsql存储过程和游标_第3页
tsql存储过程和游标_第4页
tsql存储过程和游标_第5页
资源描述:

《tsql存储过程和游标》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、www.eduask.com存储过程、游标上午存储过程一、遇到的问题我们在之前学习的课程写了不少的批处理语句,这些批处理语句存在两个问题:1.没法像函数那样传参数运行(自定义化)2.没法像函数那样可以反复地调用(功能化模块化)说到这里,我们可以猜到,数据库中应该可以建立函数形式的数据库对象来解决这样的问题。但是介绍这种数据库对象之前,我们再来看几个需要解决的问题:我们已经学会把一条select语句封装在视图中,但是它只能用来查询,如果我们希望进行其它操作,比如增删改记录、建删库表等,是不能用视图来完成的。另一方面,如果把一个带有更改操作的批处理整个存储成数据库对象,

2、还可以把处理数据的程序移动到离数据尽可能近的地方,而不是总把这些操作写在客户端程序(如Java、C#)中。通过将处理数据的程序从客户应用程序移动到服务器,可以降低网络流量,并提高性能和数据的完整性。二、存储过程的概念解决上面的问题,我们可以使用一种叫做“存储过程”的数据库对象。存储过程(StoredProcedure)把我们经常用到的一串复杂sql语句保存成一个数据库对象,并给它起一个名字。每次使用存储过程只需要使用如下的形式即可:execproc存储过程名www.eduask.com存储过程还可以带参数运行:execproc存储过程名参数值[,参数值...]l存储

3、过程并不神秘,它就是批处理。之前提到视图是保存在服务器上的命名select语句,与之类似,存储过程是保存在服务器上的命名批处理,系统将预先对它进行编译。l存储过程可以包含几乎所有的T-SQL语句,如数据存取语句、流程控制语句、错误处理语句等,使用起来弹性很大。l数据库中也存在着系统函数和用户定义函数这两种对象,用户定义函数的功能和存储过程很像,但是有一定的区别,我们将在后面的课程中介绍。【存储过程的分类】l系统存储过程systemstoredprocedure前缀sp_例如sp_helpsp、helpdbl扩展存储过程extendedstoredprocedure前

4、缀xp_例如xp_cmdshelll用户自定义存储过程user-definedstoredprocedure也就是我们自己创建的三、用户自定义存储过程的创建、修改、删除【创建存储过程】createproc存储过程名--无参数的存储过程as批处理语句go【修改存储过程】alterproc存储过程名--无参数的存储过程as批处理语句go可以看到,修改存储过程的语法和创建的语法只差一个单词,把create换成alt即可。www.eduask.com【删除存储过程】dropproc存储过程名我们还可使用managementstudio来管理存储过程,展开菜单树中的“可编程性

5、”,在“存储过程”的子节点中可以进行各种操作。这里要说一下创建:当点击“新建存储过程”之后,会出现一个基于模板的创建语句。这时点击菜单中的“查询→指定模板参数的值”,即可弹出对话框来对模板进行设置,从而建立我们想要的存储过程。另外,点击菜单中的“视图→模板资源管理器”,可以看到SQLSERVER2005为我们提供的各种SQL语句模板。模板的功能比较高级,有兴趣的同学务必自学一下。【一个简单的例子】--插入一个以时间为用户名的用户createprocinsUserasbegintrandeclare@usernamevarchar(20)set@username=co

6、nvert(varchar(8),getdate(),112)+replace(convert(varchar(10),getdate(),8),':','')ifnotexists(select*fromyonghuwhereyonghuming=@username)insertintoyonghuvalues(@username,'111111','@163.com','新用户')committran--也可以写commit,但是建议不要去掉trango然后使用exec执行这个存储过程:execinsUser选中exec这一行,然后按F5快速地反复执行,你会发现

7、在同一秒内只能插入一个用户。这个存储过程一旦建立就不能再次执行这段代码了,可以把create改成alter来修改。www.eduask.com注意存储过程的代码中不能go语句,因为go是用来提交批的,一旦遇到go系统会认为这个存储过程的代码已经书写完毕,会提交create或者alter的批处理。如果希望在存储过程中执行另一个批处理,请把该批处理写成另一个存储过程并调用。四、用户自定义存储过程的参数传递和返回值【传递参数】create

8、alterproc存储过程名@参数名参数类型[,@参数名参数类型...]as批处理语句go还记得我们前面做过的一个案例吗:decl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。