유니버설 페이지 저장 프로세스 사용
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에 따라 라이센스가 부여됩니다.