CREATE PROCEDURE [dbo].[UP_GIFT_Corporation_List]
(  
    @CurrentPageIndex           INT      -- 목록의 현재페이지 번호      
,   @PageSize                   INT      -- 목록의 한 페이지에 표현되는 글 목록수 
,   @SearchCondition            varchar(4000)           -- 조회조건 내용       
, @SortCondition    NVARCHAR(100)   -- 조회정렬 조건
, @Lang      NVARCHAR(10)   -- 언어
)  
AS 
SET NOCOUNT ON

DECLARE @StNum                  int  
SET     @StNum                  = (@PageSize * (@CurrentPageIndex - 1)) + 1  
DECLARE @FnNum                  int  
SET     @FnNum                  = @PageSize * @CurrentPageIndex  
DECLARE @SqlString              nvarchar(4000)   
DECLARE @SqlTotalRowCount       nvarchar(4000) 
DECLARE @ISChangeYN             char(1) 

SET @ISChangeYN = 'N'
IF charindex('Name',@SortCondition)+charindex('CATEGORY_NAME',@SortCondition)+charindex('PSEngName',@SortCondition) > 0
BEGIN
 SET @ISChangeYN = 'Y'
END

IF @ISChangeYN = 'N'
BEGIN
 SET @SortCondition = 'C.'+@SortCondition
END

SET     @SqlString = '  
WITH ORIGINAL_DATA AS ( 
SELECT 
 C.CPGUID
 ,C.TypeCD
 ,cg.CATEGORY_NAME as Type
 ,C.CPEngName
 ,C.PSGUID
 ,V.PSEngName
 ,C.CountryCD
 ,N.Name as Country
 ,C.Tel
 ,CONVERT(VARCHAR(10), C.ModifyDT, 120) as ModifyDT
 ,ROW_NUMBER() OVER(ORDER BY '+ @SortCondition+ ') AS RowNo 
FROM        dbo.TB_GIFT_Corporation  C
  LEFT OUTER JOIN dbo.TB_GIFT_VIPPerson V
  ON C.PSGUID = V.PSGUID
  LEFT OUTER JOIN CmnMgt.dbo.tb_Nation N
  ON C.CountryCD = N.ID
  LEFT OUTER JOIN CmnMgt.dbo.tb_Category Cg
  ON C.TypeCD = Cg.CATEGORY_CODE
WHERE   C.Active = ''Y'' '

SET @sqlTotalRowCount = '
SELECT
        COUNT(*) AS TOTAL_ROW_CNT
FROM        dbo.TB_GIFT_Corporation  C
  LEFT OUTER JOIN dbo.TB_GIFT_VIPPerson V
  ON C.PSGUID = V.PSGUID
  LEFT OUTER JOIN CmnMgt.dbo.tb_Nation N
  ON C.CountryCD = N.ID
  LEFT OUTER JOIN CmnMgt.dbo.tb_Category Cg
  ON C.TypeCD = Cg.CATEGORY_CODE
WHERE   C.Active = ''Y'' '


SET  @SqlString = @sqlString + @SearchCondition  
SET  @SqlTotalRowCount = @SqlTotalRowCount + @SearchCondition  

SET @SqlString = @SqlString + ' 

 
SELECT * FROM ORIGINAL_DATA WHERE RowNo BETWEEN ' + CONVERT( varchar, @StNum ) + ' AND ' + CONVERT(varchar, @FnNum)  

PRINT  @SqlString

exec sp_executesql @SqlString

exec sp_executesql @SqlTotalRowCount

'ms-sql' 카테고리의 다른 글

OPENXML(MS-SQL SP)  (1) 2010.10.18
SQL 서버의 잠금에 대한 고찰  (1) 2010.09.10
CTE 정렬방법  (0) 2010.09.10
ms-sql 2008 설치  (1) 2010.09.09
프로시져에서 Identity값 Return하기  (1) 2010.09.09
Posted by 정광원
,