유니버설 페이지 저장 프로세스 사용
1. 저장 프로세스
USE
[test]
GO
/****** Object: StoredProcedure [dbo].[ads_GetAll] Script Date: 07/04/2013 16:00:48 ******/
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
ALTER
PROCEDURE
[dbo]
.
[ads_GetAll]
--
공통 페이지 나누기 저장 프로세스
@TableName
varchar
(
50
),
--
표명
@Fields
varchar
(
5000
),
--
필드 이름
(
모든 필드
*)
@OrderField
varchar
(
5000
),
--
정렬 필드
(
반드시... 해야 한다
!
다중 필드 지원
)
@sqlWhere
varchar
(
5000
),
--
조건문
(
... 할 필요가 없다
where)
@pageSize
int
,
--
페이지당 몇 개의 기록
@pageIndex
int
=
1
,
--
현재 페이지로 지정
@COUNT
int
output
--
전체 페이지 반환
as
begin
Begin
Tran
--
트랜잭션 시작
Declare
@sql
nvarchar
(
4000
);
Declare
@totalRecord
int
;
--
총기록수를 계산하다
if
(
@SqlWhere
=
''
or
@sqlWhere
=NULL)
set
@sql
=
'select @totalRecord = count(*) from '
+
@TableName
else
set
@sql
=
'select @totalRecord = count(*) from '
+
@TableName
+
' where '
+
@sqlWhere
EXEC
sp_executesql
@sql
,
N'@totalRecord int OUTPUT'
,
@totalRecord
OUTPUT
--
총기록수를 계산하다
--
총 페이지 수 계산
select
@COUNT
=
CEILING
((
@totalRecord
+
0.0
)/
@PageSize
)
if
(
@SqlWhere
=
''
or
@sqlWhere
=NULL)
set
@sql
=
'Select * FROM (select ROW_NUMBER() Over(order by '
+
@OrderField
+
') as rowId,'
+
@Fields
+
' from '
+
@TableName
else
set
@sql
=
'Select * FROM (select ROW_NUMBER() Over(order by '
+
@OrderField
+
') as rowId,'
+
@Fields
+
' from '
+
@TableName
+
' where '
+
@SqlWhere
--
처리 페이지 수 범위 초과 상황
if
@PageIndex
<=
0
Set
@pageIndex
=
1
if
@pageIndex
>
@COUNT
Set
@pageIndex
=
@COUNT
--
시작 및 끝 처리
Declare
@StartRecord
int
Declare
@EndRecord
int
set
@StartRecord
=
(
@pageIndex
-
1
)*
@PageSize
+
1
set
@EndRecord
=
@StartRecord
+
@pageSize
-
1
--
계속 합성
sql
문장
set
@Sql
=
@Sql
+
') as '
+
@TableName
+
' where rowId between '
+
Convert
(
varchar
(
50
),
@StartRecord
)
+
' and '
+
Convert
(
varchar
(
50
),
@EndRecord
)
Exec
(
@Sql
)
---------------------------------------------------
If
@@Error
<>
0
Begin
RollBack
Tran
Return
-
1
End
Else
Begin
Commit
Tran
Return
@totalRecord
---
총 레코드 반환
End
end
2. 데이터 처리 층에서:
/// <summary> /// /// </summary> /// <param name="pageSize"> </param> /// <param name="count"> </param> /// <returns></returns> public List<Ads_Analyst> ads_Analyst_GetAll( int pageIndex, int pageSize, string where, out int count) { List<Ads_Analyst> list = new List<Ads_Analyst>(); IDataReader reader = null ; IDataParameter[] parameters = { Helper.GetParameter( "@COUNT" , DbType.Int32, ParameterDirection.Output), Helper.GetParameter( "@ReturnValue" ,DbType.Int32,ParameterDirection.ReturnValue), Helper.GetParameter( "@PAGESIZE" , DbType.Int16,pageSize), Helper.GetParameter( "@PAGEINDEX" , DbType.Int16,pageIndex), Helper.GetParameter( "@sqlWhere" , DbType.String,where), Helper.GetParameter( "@TableName" , DbType.String, "ads_Analyst" ), Helper.GetParameter( "@Fields" , DbType.String, "[ID],[AnalystName],[Picture],[JobTitle],[Trade],[Introduction],[Status],[AddTime],[EditTime]" ), Helper.GetParameter( "@OrderField" , DbType.String, "AddTime desc" ), }; try { reader = Helper.ExecuteReader ( ConnectToADS, CommandType.StoredProcedure, "ads_GetAll" , parameters ); while (reader.Read()) { Ads_Analyst m = new Ads_Analyst(); m.ID = Field.GetInt32(reader, "ID" ); m.AnalystName = Field.GetString(reader, "AnalystName" ); m.Picture = Field.GetString(reader, "Picture" ); m.JobTitle = Field.GetString(reader, "JobTitle" ); m.Trade = Field.GetString(reader, "Trade" ); m.Introduction = Field.GetString(reader, "Introduction" ); m.AddTime = Field.GetDateTime(reader, "AddTime" ); m.EditTime = Field.GetDateTime(reader, "EditTime" ); m.Status = Field.GetInt32(reader, "Status" ); list.Add(m); } reader.Close(); count = ( int )parameters[1].Value; return list; } catch (System.Exception ex) { Logger.Error( " " , ex); throw new DataAccessException( " " , ex); } finally { if (reader != null ) { reader.Close(); } } }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 호출 Oracle 스토리지 프로세스 상세 정보Java 호출 Oracle 스토리지 프로세스 상세 정보 단계: 1. Oracle 스토리지 프로세스 작성 2. 데이터베이스 작성 연결 도구 클래스 얻기 3. 간단한 응용 프로그램 호출 저장 프로세스 작성 구현: 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.