存储过程递归查询及分页示例
数据表【CN_New_Category】截图:

存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ZHAOWEI
-- Create date: 20120410
-- Description: 选取新闻中心所有类别下的数据
-- =============================================
--exec CN_New_GetAllByCategoryID 20,10,0
alter PROCEDURE CN_New_GetAllByCategoryID
(
@CategoryID int,
@PageSize INT,
@PageIndex INT
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @strStartRow NVARCHAR(50)
DECLARE @strEndRow NVARCHAR(50)
declare @RecordTable table
(
[id] int
,[categoryid] int
,[title] nvarchar(500)
,[titlecolor] varchar(100)
,[isbold] int
,[content] ntext
,[contentpagecount] int
,[titlelink] varchar(255)
,[image] varchar(50)
,[imagelink] varchar(150)
,[tempstate] int
,[skin] int
,[status] int
,[publishdate] datetime
,[validata] datetime
,[newtodata] datetime
,[createdate] datetime
,[writedate] datetime
,[inforesource] varchar(50)
,[newskey1] nvarchar(100)
,[newskey2] nvarchar(100)
,[newskey3] nvarchar(100)
,[productkey1] nvarchar(100)
,[productkey2] nvarchar(100)
,[productkey3] nvarchar(100)
,[ordernumber] int
,[newsfrom] varchar(500)
,[viewcount] int
,[item1] varchar(100)
,[item2] varchar(100)
,[item3] varchar(100)
)
SET @strStartRow = @PageIndex*@PageSize + 1;
SET @strEndRow = @PageIndex*@PageSize + @PageSize;
with Categorys(ID,ParentID,CategoryID1,CategoryID2,CategoryID3,CategoryID4,CategoryName,LevelID,CategoryURL,
Status,BGColor,BGImage,TempState,OrderNumber,TitleColor,IsBold)
as
(
select * from CN_New_Category where LevelID=1 and id=@CategoryID
union all
select SC.* FROM CN_New_Category SC
INNER JOIN Categorys C ON SC.ParentID=C.ID
)
insert into @RecordTable
select * from CN_New_Info where categoryid in
(
select id from Categorys
)
SELECT T.*
FROM
(
select row_number() over (order by createdate desc) as SNO,* from @RecordTable
) AS T
WHERE T.SNO>=@strStartRow AND T.SNO<=@strEndRow
SELECT COUNT(ID) AS recordcount FROM @RecordTable
END
GO
测试运行结果截图:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端