create table board
(
id int identity(1,1),
name nvarchar(10),
contents nvarchar(1000),
email varchar(100),
password varchar(20)
)
listbox의 검색 조건과 검색내용을 입력받아 검색된 결과를 출력한다.
검색조건은 name, contents, email 으로 되어 있으며 검색내용은 무작위 입력이기 때문에 like를 사용한다.
하나의 프로시져로 전체보기와 검색을 동시에 하려고 하다보니....
따로 짤껄 그랬나...;;
머 페이징도 넣어야 하고.. 하나의 쿼리로 하는것이.. 낳지 않을까 생각해본다.
null값 체크 부분은 함수로 빼서 처리
--- 검색 프로시져 ---
create proc select_board
(
@schType nvarchar(10),
@schText nvarchar(20)
)
as
begin
if(@schText is null or @schText = '')
begin
select
id,
aspnet.dbo.nullChk(name) as name,
aspnet.dbo.nullChk(contents) as contents,
aspnet.dbo.nullChk(convert(varchar(10),date,120)),
aspnet.dbo.nullChk(email) as email,
aspnet.dbo.nullChk(password) as password
from board
order by id desc
end
else
begin
select
id,
aspnet.dbo.nullChk(name) as name,
aspnet.dbo.nullChk(contents) as contents,
aspnet.dbo.nullChk(convert(varchar(10),date,120)),
aspnet.dbo.nullChk(email) as email,
aspnet.dbo.nullChk(password) as password
from board
where
case @schType
when 'name' then name
when 'contents' then contents
when 'email' then email
end
like '%'+@schText+'%'
order by id desc
end
end
--- nullChk() ---
create function [dbo].[nullChk]
(
@text nvarchar(max)
)
Returns nvarchar(max)
as
begin
declare @return nvarchar(max)
if(@text is null)
begin
set @text = 'no date'
end
return (@text)
end
댓글 영역