存儲過程實現(可帶查詢條件/萬能分頁/通用)建站
導讀:1建站知識可帶查詢條件的SQL語句的分頁存儲過程,在項目開發中很實用,感興趣的朋友可以了解下,希望本文可以鞏固你的存儲seo網站排名優化軟件營銷型網站建設。
假設數據網站建設制作庫中有張表,表名是UserName,字段分別是ID(int),Name(nvarchar),Age(int)。 如果不帶查詢條件存儲過程是:
復制代碼 代碼如下:
CREATE PROCEDURE [dbo].[UserName] @pageIndex int, @pageSize int AS declare @min int; declare @max int; set @min=@pageSize*(@pageIndex-1)+1; set @max=@pageSize*@pageIndex; with myTable as(select ID,Name,Age,Row_Number() over (order by ID) as rownum from [UserName] ) select ID,Name,Age from myTable where rownum between @min and @max RETURN
這個分頁存儲過程很不實用,并且表是固定的。 下面十二個萬能分頁存儲過程,網站seo優化培訓復制代碼 代碼如下:
CREATE PROCEDURE [dbo].[UP_GetRecordByP如何seo優化推廣網站age] @tblName varchar(255), -- 表名 @fldName varchar(255), -- 主鍵字段名 @PageSize int , -- 頁尺寸 @PageIndex int , -- 頁碼 @IsReCount bit, -- 返回記錄總數, 非 0 值則返回 @OrderType bit, -- 設置排序類型, 非 0 值則降序 @strWhere varchar(1000) = '' -- 查詢條件 (注意: 不要加 where) AS declare @strSQL varchar(6000) -- 主語句 declare @strTmp varchar(2000) -- 臨時變量(查詢條件過長時可能會出錯,可修改100為1000) declare @strOrder varchar(400) -- 排序類型 if @OrderType != 0 begin set @strTmp = '<(select min' set @strOrder = ' order by [' + @fldName +'] desc' end else begin set @strTmp = '>(select max' set @strOrder = ' order by [' + @fldName +'] asc' end set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' + @strOrder if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder if @PageIndex <> 0 begin set @strTmp ='' if @strWhere != '' set @strTmp = ' where ' + @strWhere set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + ']' + @strTmp + ' ' + @strOrder exec (@strSQL) end if @IsReCount != 0 begin set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere exec (@strSQL) end
使用方法:復制代碼 代碼如下:
EXEC dbo.UP_GetRecordByPage @tblName = ‘UserName', -- varchar(255) @fldName = 'ID', -- varchar(255) @PageSize = 2, -- int @PageIndex = 1, -- int @IsReCount = 0, -- bit @OrderType = 1, -- bit @strWhere = 'Age=13' -- varchar(1000)
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章存儲過程實現(可帶查詢條件/萬能分頁/通用)建站主要講述分頁,存儲過程,存儲過程實現(可帶查詢條件/萬能網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_5990.html