최근 프로젝트 에 사 용 된 Sqlserver 페이지 저장 프로 세 스 및 호출 패키지 코드
8159 단어 sqlserver
USE [RS]
GO
/****** Object: StoredProcedure [dbo].[UP_Paging] Script Date: 05/30/2013 17:43:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[UP_Paging]
@Tables nvarchar(512), -- , tA a inner join tB b On a.AID = b.AID
@PK nvarchar(128)='', -- , a.AID
@Sort nvarchar(512) = '', --
@PageIndex int = 1, --
@PageSize int = 10, --
@Fields nvarchar(1024) = '*',--
@Where nvarchar(1024) = NULL,--Where
@RecordCount int output --
AS
DECLARE @strFilter nvarchar(4000)
declare @sql nvarchar(4000)
IF @Where IS NOT NULL AND @Where != ''
BEGIN
SET @strFilter = ' WHERE ' + @Where + ' '
END
ELSE
BEGIN
SET @strFilter = ''
END
if @Sort = ''
set @Sort = @PK + ' DESC '
IF @PageIndex < 1
SET @PageIndex = 1
if @PageIndex = 1 --
begin
set @sql = 'select top ' + str(@PageSize) +' '+@Fields+ ' from ' + @Tables + ' ' + @strFilter + ' ORDER BY '+ @Sort
print @sql
end
else
begin
DECLARE @START_ID varchar(50) --
DECLARE @END_ID varchar(50) --
SET @START_ID = convert(varchar(50),(@PageIndex - 1) * @PageSize + 1)
SET @END_ID = convert(varchar(50),@PageIndex * @PageSize)
set @sql = ' SELECT '+@Fields+
' FROM '+
' ('+
' SELECT ROW_NUMBER() OVER(ORDER BY '+@Sort+') AS rownum, '+@Fields+
' FROM '+@Tables+' ' +@strFilter+
' ) AS D'+
' WHERE rownum BETWEEN '+@START_ID+' AND ' +@END_ID +' ORDER BY '+@Sort
END
EXEC (@sql)
--
set @recordCount=0;
set @sql = N'SELECT @recordCount=Count(1) FROM ' + @Tables + @strFilter
EXEC sp_executesql @sql,N'@recordCount int out',@RecordCount out
GO
C\#호출 코드:
/// <summary>
///
/// </summary>
/// <param name="pi"></param>
public virtual void Pager(RPageInfo pi)
{
/*
CREATE PROCEDURE UP_Paging
@Tables nvarchar(512), -- , tA a inner join tB b On a.AID = b.AID
@PK nvarchar(128)='', -- , a.AID
@Sort nvarchar(512) = '', --
@PageIndex int = 1, --
@PageSize int = 10, --
@Fields nvarchar(1024) = '*',--
@Where nvarchar(1024) = NULL,--Where
@RecordCount int output --
AS
*/
SqlParameter[] parameters = {
new SqlParameter("@Tables", SqlDbType.NVarChar,512),
new SqlParameter("@PK", SqlDbType.NVarChar,128),
new SqlParameter("@Sort", SqlDbType.NVarChar,512),
new SqlParameter("@PageIndex", SqlDbType.Int),
new SqlParameter("@PageSize", SqlDbType.Int),
new SqlParameter("@Fields", SqlDbType.NVarChar,1024),
new SqlParameter("@Where", SqlDbType.NVarChar,1024),
new SqlParameter("@RecordCount", SqlDbType.Int)
};
parameters[0].Value = pi.TableName;
parameters[1].Value = pi.Pk;
parameters[2].Value = pi.Sort;
parameters[3].Value = pi.PageIndex;
parameters[4].Value = pi.PageSize;
parameters[5].Value = pi.Fields;
parameters[6].Value = pi.Fwhere;
parameters[7].Direction = ParameterDirection.Output;
DataTable data = DbHelperSQL.RunProcedure("UP_Paging", parameters, "ds").Tables[0];
pi.Data = data;
pi.RecordCount = Convert.ToInt32(parameters[7].Value);
pi.PageCount = (long)Math.Ceiling(pi.RecordCount/(pi.PageSize+0.0));
}
RPageInfo 봉 인 된 페이지 정보,코드 는 다음 과 같 습 니 다.
/// <summary>
///
/// </summary>
public class RPageInfo
{
private String _tableName;
/// <summary>
/// , , :
/// (select * from Dept) as model
/// </summary>
public String TableName
{
get { return _tableName; }
set { _tableName = value; }
}
private String _pk=string.Empty;
/// <summary>
///
/// </summary>
public String Pk
{
get { return _pk; }
set { _pk = value; }
}
private string _sort = string.Empty;
/// <summary>
/// , : 1 ASC, 2 DESC
///
/// </summary>
public string Sort
{
get { return _sort; }
set { _sort = value; }
}
private string _fields="*";
/// <summary>
/// , *
/// </summary>
public string Fields
{
get { return _fields; }
set { _fields = value; }
}
private string _fwhere = string.Empty;
/// <summary>
///
/// </summary>
public string Fwhere
{
get { return _fwhere; }
set { _fwhere = value; }
}
private int _pageIndex = 1;
/// <summary>
///
/// </summary>
public int PageIndex
{
get { return _pageIndex; }
set { _pageIndex = value; }
}
private int _pageSize = 10;
/// <summary>
///
/// </summary>
public int PageSize
{
get { return _pageSize; }
set { _pageSize = value; }
}
private long _recordCount;
/// <summary>
///
/// </summary>
public long RecordCount
{
get { return _recordCount; }
set { _recordCount = value; }
}
private long _pageCount;
/// <summary>
///
/// </summary>
public long PageCount
{
get { return _pageCount; }
set { _pageCount = value; }
}
private DataTable _data;
/// <summary>
///
/// </summary>
public DataTable Data
{
get { return _data; }
set { _data = value; }
}
}
사용 코드:
/// <summary>
///
/// </summary>
/// <param name="pi"></param>
/// <param name="isCityHospital"> </param>
/// <param name="hospitalName"> </param>
public void GetHospitals(RPageInfo pi,bool? isCityHospital,string hospitalName)
{
pi.TableName = "(SELECT * FROM [HOSPITAL] WHERE 1=1 ";
if (isCityHospital!=null && isCityHospital.Value)
{
pi.TableName += " AND [LEVEL]=1";
}
else if (isCityHospital != null && !isCityHospital.Value)
{
pi.TableName += " AND [LEVEL]=0";
}
if (hospitalName != null && hospitalName.Trim() != string.Empty)
{
pi.TableName += " AND [HOSTPITALNAME] LIKE '%" + hospitalName + "%'";
}
pi.TableName += ") AS MODEL ";
pi.Pk = "HospitalID";
base.Pager(pi);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
우분투에 SQL 서버 설치Microsoft SQL Server는 오늘날 업계에서 가장 눈에 띄는 데이터베이스 중 하나입니다. 이번 포스팅에서는 우분투에 설치하는 방법을 알려드리겠습니다. sudo 권한이 있는 계정 1단계: 터미널 열기 단축키...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.