ASP.NET 기초 강의실

시삽: 레드플러스 님 
게시판 이동:
 제목 : [1]한줄메모장 작성을 위한 테이블 및 저장 프로시저 작성
글번호: 299
작성자: 레드플러스
작성일: 2008/07/16 오전 10:43:00
조회수: 6733
이번 강좌에서는

한줄메모장 작성시 필요한 테이블 구조와 저장 프로시저를 작성해 보도록 하겠습니다.

실제로 실행되는 Memo의 유형을 보시려면, 아래 URL을 먼저 참고해 보시기 바랍니다.

-- 참고 : http://www.dotnetkorea.com/boardview.asp?BoardName=Aspx&Num=294

아래와 같은 형태로 간단한 테이블을 설계하도록 합니다.

-- Memos 테이블 설계
Create Table dbo.Memos
(
    Num Int Identity(1, 1) Primary Key,
    Name VarChar(25) Not Null,
    Email VarChar(50) Null,
    Title VarChar(150) Not Null,
    PostDate DateTime Default(GetDate()),
    PostIP VarChar(15) Null
)
Go

학습용으로 만들어진 6개 스타일의 저장 프로시저를 작성합니다.

입력, 출력, 상세, 수정, 삭제, 검색의 순서대로 작성합니다.

-- 입력 저장 프로시저 : AddMemo
Create Proc dbo.AddMemo
    @Name VarChar(25), @Email VarChar(50),
    @Title VarChar(150), @PostIP VarChar(15)
As
    Insert Into Memos
    Values(@Name, @Email, @Title, GetDate(), @PostIP)
Go

-- 출력 저장 프로시저(기본 페이징) : GetMemos
Create Proc dbo.GetMemos
As
    Select * From Memos Order By Num Desc
Go

-- 출력 저장 프로시저(고급 페이징) : GetMemos
Alter Proc dbo.GetMemos -- SQL Server 2005 전용
    @Page Int -- 몇번째 페이지 보여줄지? 0 : 1페이지, 99면 : 100페이지
As
    Select Top 10 * From Memos
    Where
        Num Not In
        (
            Select Top (10 * @Page) Num From Memos
            Order By Num Desc
        )
    Order By Num Desc
Go

-- 출력 저장 프로시저(고급 페이징) : GetMemos : 동적 쿼리문
Alter Proc dbo.GetMemos -- SQL Server 2000에서 사용한다면...
    @Page Int
As
    Declare @strSql VarChar(500)
    Set @strSql = '
        Select Top 10 * From Memos
        Where
            Num Not In
            (
                Select Top ' + Cast((10 *  + @Page) As VarChar)
                    + ' Num From Memos Order By Num Desc
            )
        Order By Num Desc
    '
    Exec(@strSql)
Go

-- 현재 Memos 테이블의 레코드 수 반환 : GetTotalMemo
Create Proc dbo.GetTotalMemo
As
    Select Count(*) As Total From Memos
Go

-- 메모를 검색하는 저장 프로시저
Create Proc dbo.FindMemos
    @SearchField VarChar(10),
    @SearchQuery VarChar(25)
As
    Set @SearchQuery = '%' + @SearchQuery + '%'
    Select Top 100 * From Memos
    Where
        (
            Case @SearchField
            When 'Name' Then Name
            When 'Title' Then Title
            Else @SearchQuery
            End
        )    
        Like
        @SearchQuery
    Order By Num Desc
Go

FindMemos 'Name', '홍길'
Go

-- 예시문 : 100건 데이터 입력
Declare @i Int
Set @i = 1
While @i <= 100
Begin
    Exec AddMemo '홍길동', 'h@h.com', '안녕하세요.', '127.0.0.1'

    Set @i = @i + 1
End

-- 기존 기본 페이징 : 전체 읽어다 10개만 보여준다.
Select * From Memos
Go
-- 앞으로 성능 향상 페이징 : 10개만
GetMemos 4
Go

-- 검색 결과 리스트에 따른 페이징 처리 수정

-- 검색 결과에 대한 레코드 수 반환
Create Proc dbo.GetTotalFindMemo
    @SearchField VarChar(10),
    @SearchQuery VarChar(25)    
As
    Set @SearchQuery = '%' + @SearchQuery + '%'
    Select Count(*) From Memos
    Where
        (
            Case @SearchField
            When 'Name' Then Name
            When 'Title' Then Title
            Else @SearchQuery
            End
        )    
        Like
        @SearchQuery
Go

-- 출력 저장 프로시저(고급 페이징) : GetMemos : 동적 쿼리문
Create Proc dbo.GetFindMemos -- SQL Server 2000에서 사용한다면...
    @Page Int,
    @SearchField VarChar(10),
    @SearchQuery VarChar(25)
As
    Declare @strSql VarChar(500)
    Set @strSql = '
        Select Top 10 * From Memos
        Where
            ' + @SearchField + ' Like ''%' + @SearchQuery + '%''
            And  
            Num Not In
            (
                Select Top ' + Cast((10 *  + @Page) As VarChar)
                    + ' Num From Memos Where ' + @SearchField + ' Like ''%' + @SearchQuery + '%'' Order By Num Desc
            )
        Order By Num Desc
    '
    Exec(@strSql)
Go
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 GridView로 리스트 출력시 번호를 순서대로 - 레드플러스 2009-08-13 6620
  [!] 3Tier + Enterprise Library 한줄 메모장(Memo Appl... - 레드플러스 2008-07-16 6312
현재글 [1]한줄메모장 작성을 위한 테이블 및 저장 프로시저 작성 - 레드플러스 2008-07-16 6733
  [2] Visual Studio 2008 Solution Explorer 구성 WebMemoEL.jpg(59 KB) 레드플러스 2008-07-16 5490
  [3] DB Layer : Database Abstract Class : DataPr... - 레드플러스 2008-07-16 5694
  [3][1] SQL Server 전용 DB 처리 : SqlDataProvider.cs - 레드플러스 2008-07-16 6040
  [4] Biz로직 : Entity Class : MemoInfo.cs - 레드플러스 2008-07-16 4691
  [5] Business Layer : Controller Class : MemoCon... - 레드플러스 2008-07-16 5259
  [6] Presentation Layer : UI : RedPlusMemo.ascx - 레드플러스 2008-07-16 7573
  [6][1] RedPlusMemo.ascx.cs - 레드플러스 2008-07-16 4814
다음글 [!] 답변형 게시판 : /WebReply/ - 레드플러스 2008-07-14 5849
 
손님 사용자 Anonymous (손님)
로그인 Home