MSSQL의 페이지 조회 저장 프로세스
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--
CREATE PROCEDURE [dbo].[sp_Paging]
(
@Tables nvarchar(1000), -- /
@PrimaryKey nvarchar(100), --
@Sort nvarchar(200) = NULL, -- ( order by)
@pageindex int = 1, --
@PageSize int = 10, --
@Fields nvarchar(1000) = N'*', --
@Filter nvarchar(1000) = NULL, --where ( where)
@Group nvarchar(1000) = NULL --Group ( Group By)
)
AS
DECLARE @SortTable nvarchar(100)
DECLARE @SortName nvarchar(100)
DECLARE @strSortColumn nvarchar(200)
DECLARE @operator char(2)
DECLARE @type nvarchar(100)
DECLARE @prec int
--
IF @Sort IS NULL OR @Sort = ''
SET @Sort = @PrimaryKey
IF CHARINDEX('DESC',@Sort)>0
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
SET @operator = '<='
END
ELSE
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
SET @operator = '>='
END
IF CHARINDEX('.', @strSortColumn) > 0
BEGIN
SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
END
ELSE
BEGIN
SET @SortTable = @Tables
SET @SortName = @strSortColumn
END
--
SELECT @type=t.name, @prec=c.prec FROM sysobjects o
JOIN syscolumns c on o.id=c.id
JOIN systypes t on c.xusertype=t.xusertype WHERE o.name = @SortTable AND c.name = @SortName
IF CHARINDEX('char', @type) > 0
SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
DECLARE @strPageSize nvarchar(50)
DECLARE @strStartRow nvarchar(50)
DECLARE @strFilter nvarchar(1000)
DECLARE @strSimpleFilter nvarchar(1000)
DECLARE @strGroup nvarchar(1000)
IF @pageindex <1
SET @pageindex = 1
SET @strPageSize = CAST(@PageSize AS nvarchar(50))
--
SET @strStartRow = CAST(((@pageindex - 1)*@PageSize + 1) AS nvarchar(50))
--
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
SET @strSimpleFilter = ' AND ' + @Filter + ' '
END
ELSE
BEGIN
SET @strSimpleFilter = ''
SET @strFilter = ''
SET @strGroup='';
END
IF @Group IS NOT NULL AND @Group != ''
SET @strGroup = ' GROUP BY '+@Group;
/*
--
DECLARE @TotalCountSql nvarchar(1000)
SET @TotalCountSql=N'SELECT @TotalCount=COUNT(*)' +N' FROM ' + @Tables + @strFilter
EXEC sp_executesql @TotalCountSql,N'@TotalCount int OUTPUT',@TotalCount OUTPUT
*/
--
declare @sql varchar(2000);
declare @sql2 varchar(1000);
declare @sql3 varchar(1000);
declare @sql4 varchar(1000);
declare @sql5 varchar(1000);
set @sql = 'DECLARE @SortColumn ' + @type+';';
set @sql2 = 'SET ROWCOUNT ' + @strStartRow+';';
/*
print '@strSortColumn='+@strSortColumn;
print '@Tables:'+@Tables;
print '@strFilter:'+@strFilter;
print '@strGroup:';
print '@Sort:'+@Sort;
*/
set @sql3='SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ORDER BY ' + @Sort+';';
set @sql4='SET ROWCOUNT ' + @strPageSize+';';
set @sql5='SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ORDER BY ' + @Sort + ''+';';
/*
print 'sql:'+@sql;
print 'sql2:'+@sql2;
print 'sql3:'+@sql3;
print 'sql4:'+@sql4;
print 'sql5:'+@sql5;
*/
set @sql = @sql+@sql2+@sql3+@sql4+@sql5;
print @sql;
EXEC(@sql)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SQL Server Express 2016 LocalDB에 샘플 데이터베이스 만들기SQL Server Express 2016 LocalDB에 샘플 데이터베이스를 만들려고했습니다. 개발을 위해 간단한 데이터베이스를 준비하고 싶었기 때문에 공식 샘플 데이터베이스를 사용했습니다. 이번에는 Visual ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.