存储过程是一组预编译的SQL语句,其优点是允许模块化设计,也就是说只需创建一次,以后在程序中就可以多次调用,如果某次操作需要执行多条SQL语句,那么使用存储过程比单纯的执行SQL语句的速度要快 SQL Serve存储过程主要分为: 在SQL Server数据库里系统也自带了许多存储过程,本文主要讲述的是用户自定义存储过程。 创建无参存储过程的语法 语法解析: create proc(proc是创建存储过程的关键字) 存储过程名 调用无参存储过程 使用exec关键字后面加上存储过程名调用存储过程 创建有参存储过程很简单,和无参的类似,只不过是在定义的时候存储过程名后面要跟上一对小括号里面定义参数 这里创建有参存储过程的时候,是变量名在前,变量类型在后,记得不要搞返了,如果有多个参数则以逗号 ‘,’ 分开 调用的时候加上对应类型的参数就ok了,调用的时候就不用()小括号,多个参数也是逗号分开 所谓有输出的存储过程就是把变量传递给这个存储过程之后,经过处理可以改变这个变量的值 如果参数是输出参数的话,则只要在定义形参的时候在后面加上out 关键字 执行结果: 在日常开发中,分页是经常要用到的,如果我们一次性把数据库里的数据全部查询出来的话,数据少的时候可能感受不出来,但数据达到上万条甚至更多的话,查询时间就会很长,这也就意味着用户需要等待一段时间才能看到内容,所以对用户体验不太友好。这个时候就要用到分页功能,按量显示数据,这样系统执行速度也会相对较快 调用 查询结果: 我们上面创建了那么多个存储过程,那么在哪里可以看到我们创建的存储过程呢? 使用 drop proc 关键字加上存储过程名来删除存储过程概述
如果有C#或者Java等语言基础的同学可以将存储过程理解为那些编程语言里的方法
创建存储过程
无参存储过程
create proc cp_select_book as select * from [dbo].[Books]
as
需要执行的操作exec cp_select_book
有参存储过程
create proc cp_select_book ( @name nvarchar(50) ) as select * from [dbo].[Books] where name = @name
调用存储过程exec cp_select_book '我是有参存储过程'
有参有输出存储过程
模拟场景:当我按条件查询一个表的信息的时候并且需要得到他所有的记录条数,这个时候就要用到有输出的存储过程了create proc cp_select_booke_byNameExt ( @name varchar(20), --out关键字就代表这是输出参数 @recorRows int out ) as select * from [dbo].[Books] where name like '%'+@name+'%' --计算总记录数 select @recorRows=COUNT(*) from [dbo].[Books] where name like '%'+@name+'%'
调用有参有输出存储过程--定义一个变量用来接收返回参数 declare @recorRows int --传入参数的时候也要加上out关键字 exec cp_select_booke_byNameExt 'vue',@recorRows out --打印出总记录数 print @recorRows --查询books表所有数据,用来做区分 select * from [dbo].[Books]
可以看到符合条件的数据只有一条,那么问题来了,我要的显示符合总记录是应该是一个数字,但是他没显示出来??
其实当我们使用了print打印出来的数据都在“消息”这个选项卡里
可以看到确实是一条记录存储过程完成分页功能
分页例子
create proc cp_select_booke_paging ( @name nvarchar(50),--按照名称来查询 @pageIndex int,--第几页 @pageSize int,--每页显示数量 @totalCount int --所有页面的总记录数 ) as select top (@pageSize) * from [dbo].[Books] where name like '%'+@name+'%' and id not in (select top ((@pageIndex-1)*@pageSize) ID from [dbo].[Books] order by ID) order by ID --查询总记录数 select @totalCount=COUNT(*) from [dbo].[Books] where name like '%'+@name+'%'
select * from [dbo].[Books] declare @totalCount int --查询第一页并且每页显示两条内容 exec cp_select_booke_paging '',1,2,@totalCount print @totalCount
再来看看第二页的数据是否正确,第二页应该显示“西游记”和“红楼梦”这两条数据
按照预期的执行,分页完成。SQL Server分页的方法也有很多种,网上也有很多教程这里只介绍一种,不多过概述分页。存储过程所在位置
数据库展开>可编程性>存储过程
我们在数据库定义的所有存储过程都会在这个位置找到删除存储过程
drop proc cp_select_book
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算