分享Sql Server 存储过程使用方法
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
一、简介
简单记录一下存储过程的使用。存储过程是预编译SQL语句集合,也可以包含一些逻辑语句,而且当第一次调用存储过程时,被调用的存储过程会放在缓存中,当再次执行时,则不需要编译可以立马执行,使得其执行速度会非常快。
二、使用
创建格式 create procedure 过程名( 变量名 变量类型 ) as begin ........ end
create procedure getGroup(@salary int) as begin ? ?SELECT d_id AS '部门编号', AVG(e_salary) AS '部门平均工资' FROM employee GROUP BY d_id? HAVING AVG(e_salary) > @salary end ? ??
调用时格式,exec 过程名 参数
exec getGroup 7000
三、在存储过程中实现分页
3.1 要实现分页,首先要知道实现的原理,其实就是查询一个表中的前几条数据
select top 10 * from table ?--查询表前10条数据? select top 10 * from table where id not in (select top (10) id ?from tb) --查询前10条数据 ?(条件是id 不属于table 前10的数据中)
3.2 当查询第三页时,肯定不需要前20 条数据,则可以
select top 10 * from table where id not in (select top ((3-1) * 10) id ?from tb) --查询前10条数据 ?(条件是id 不属于table 前10的数据中)
3.3 将可变数字参数化,写成存储过程如下
create proc sp_pager ( ? ? @size int , --每页大小 ? ? @index int --当前页码 ) as begin ? ? declare @sql nvarchar(1000) ? ? if(@index = 1)? ? ? ? ? set @sql = 'select top ' + cast(@size as nvarchar(20)) + ' * from tb' ? ? else? ? ? ? ? set @sql = 'select top ' + cast(@size as nvarchar(20)) + ' * from tb where id not in( select top '+cast((@index-1)*@size as nvarchar(50))+' id ?from tb )' ? ? execute(@sql) end
3.4 当前的这种写法,要求id必须连续递增,所以有一定的弊端
所以可以使用 row_number(),使用select语句进行查询时,会为每一行进行编号,编号从1开始,使用时必须要使用order by 根据某个字段预排序,还可以使用partition by 将 from 子句生成的结果集划入应用了 row_number 函数的分区,类似于分组排序,写成存储过程如下
create proc sp_pager ( ? ? @size int, ? ? @index int ) as begin ? ? select * from ( select row_number() over(order by id ) as [rowId], * from table) as b ? ? where [rowId] between @size*(@index-1)+1 ?and @size*@index end
到此这篇关于分享Sql Server 存储过程使用方法的文章就介绍到这了,更多相关Sql Server 存储过程内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!
相关文章
Windows系统彻底卸载SQL?Server通用方法(推荐!)
卸载SQL是一件很麻烦的事,只要是重装过SQL的人都知道,下面这篇文章主要给大家介绍了关于Windows系统彻底卸载SQL?Server通用方法的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下2023-01-01关于SQL数据库 msdb.dbo.sp_send_dbmail 函数发送邮件的场景分析
这篇文章主要介绍了关于SQL数据库 msdb.dbo.sp_send_dbmail 函数发送邮件的场景分析,需要的朋友可以参考下2018-10-10CREATE FUNCTION sqlserver用户定义函数
创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过 EXECUTE 语句执行2012-07-07SQL Server 数据库管理常用的SQL和T-SQL语句
SQL Server 数据库管理常用的SQL和T-SQL语句...2006-08-08SQLServer"通过端口1433连接到主机localhost的TCP/IP连接失败"常见问题的解
今天碰到一个问题,查了很久,这里给大家总结下,这篇文章主要给大家介绍了关于Java通过JDBC连接SQLServer?2012出现"通过端口1433连接到主机localhost的TCP/IP连接失败"常见问题的解决方案,需要的朋友可以参考下2023-05-05
最新评论