存储过程——分页功能及触发器(八)
- 实现分页功能
- 要求取出表A中第31到40条的记录(第4页信息),sql server以自动增长的ID作为主键,注意ID不能是连续的
答案
select top 10 * form A where id not in(select top 30 id from A)
那通过存储过程怎样去实现通用的分页功能的
分析
- 转递参数,表名,页码,页面数据展示大小,主键列名
以下雏形便产生了
-- ============================================= -- Author: <Author,,Name> -- Create date: 2014年4月13日 00:36:24 -- Description: 分页功能 -- ============================================= CREATE PROCEDURE GetDataByPageNo @tablename nvarchar(100),--表名 @pagesize int,--页大小 @pageno int,--页码 @columns nvarchar(50)--按列排序 AS BEGIN DECLARE @sql nvarchar(1000) SET @sql='select top '+CAST(@pagesize as nvarchar(10))+' * from '+@tablename+ ' where '+ @columns +' not in (select top '+CAST((@pageno-1)*@pagesize as nvarchar(10))+' '+@columns+' from '+ @tablename+' )' EXEC(@Sql) END
- 触发器
- 触发器简介
触发器是一种DBMS相应特殊表或增、删、改操作的特殊类型的存储过程
2. 触发器语法
具体应用如下
- 要求,流水账号实现
流水帐号格式:20140413000000、20140413000000
给产品表添加触发器
通过存储过程添加数据实现存触发器,修改表字段
2. 具体操作如下
分析:
流水号格式,当期日期+最大id号六位数字组成
代码如下
-- Author: <Author,,Name> -- Create date: 2014年4月13日 11:39:48 -- Description: 生成流水号 -- ============================================= CREATE TRIGGER [dbo].[SetProNO] ON [dbo].[product]--操作表 AFTER INSERT--具体操作,执行什么操作触发 AS BEGIN DECLARE @year nvarchar(10) DECLARE @mouth nvarchar(10) DECLARE @day nvarchar(10) DECLARE @id nvarchar(50) DECLARE @No nvarchar(50) DECLARE @str nvarchar(10) SET @year=Datename(yyyy,getdate()) SET @mouth=Datename(mm,getdate()) SET @day=Datename(dd,getdate()) SET @str='000000' SELECT @id=MAX(ID) FROM [dbo].[product] SET @No=@year+@mouth+@day+RIGHT(@str+@id,6) UPDATE product SET No=@No where id=@id END
调用下面存储过程,直接触发上述触发器
-- ============================================= -- Author: <Author,,Name> -- Create date: 2014年4月13日 12:03:13 -- Description: 产品信息添加 -- ============================================= CREATE PROCEDURE [dbo].[Addproduct] @Name nvarchar(50), @Price money, @address nvarchar(50), @type int AS BEGIN INSERT product ( Name, Price, Address, Type ) VALUES ( @Name, @Price, @Address, @type ) END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述