제목 : [1]한줄메모장 작성을 위한 테이블 및 저장 프로시저 작성
글번호:
|
|
299
|
작성자:
|
|
레드플러스
|
작성일:
|
|
2008/07/16 오전 10:43:00
|
조회수:
|
|
6725
|
이번 강좌에서는
한줄메모장 작성시 필요한 테이블 구조와 저장 프로시저를 작성해 보도록 하겠습니다.
실제로 실행되는 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