Root

Welcome to Root.niceboards.org
Chào mừng bạn đến với 4rum học tập, chia sẻ kinh nghiệm và Tài liệu, Ebook miễn phí
Nếu đã có tài khoản vui lòng đăng nhập hoặc chỉ mất 30s để Đăng ký
Thanks!
Root

Hôm qua là quá khứ - Ngày mai là bí ẩn - Hôm nay là một món quà


You are not connected. Please login or register

Viết Store PROCEDURE phần 5

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

1 Viết Store PROCEDURE phần 5 on Tue Sep 28, 2010 2:07 am

Admin


Admin
Tiếp theo mình sẽ viết thủ tục tìm kiếm bài viết theo điều kiện

Trong thủ tục này mình viết tìm kiếm bài viết đơn giản theo trạng thái (Status), Theo Chuyên mục (CateID) và theo từ khóa (Keyword). Ngoài ra bạn muốn tìm theo các trường khác như Thời gian viết, Thời gian đăng, ... bạn có thể bổ xung vào thủ tục
+ Trang Thái
- Nếu @Status=1 => Các bài đã đăng
- Nếu @Status=-1 => Các bài chờ đăng
- Nếu @Status=0 => Không Set
+ Chuyên mục
- Nếu @CateID>0 => Tìm theo điều kiện CateID
+ Từ khóa
Ở đây mình tìm kiếm theo điều kiện LIKE ở trường Title và trường Description (Nếu bạn cần tìm theo các trường khác thì bạn có thể thay đồi)

Thủ tục tìm kiếm minh họa như sau

-- =============================================

-- Author: [You must be registered and logged in to see this link.]

-- Description: <Tìm kiếm bài viết theo điều kiện>

-- =============================================

CREATE PROCEDURE spTB_News_Search

@Status int,

@CateID int,

@Keyword nvarchar(255)

AS

BEGIN

-- Khai báo chuỗi truy vấn

DECLARE @SQL nvarchar(4000)

SET @SQL =''

SET @SQL =@SQL+ N'

SELECT

TB_Category.CateID,

TB_Category.CateName,

TB_News.idNews,

TB_News.UserName,

TB_News.Title,

TB_News.Description,

TB_News.Content,

TB_News.Author,

TB_News.Picture,

CONVERT(nvarchar(30),TB_News.CreateDate,103) AS CreateDate,

CONVERT(nvarchar(30),TB_News.PublishDate,103) AS PublishDate,

CASE TB_News.Status

WHEN 1 THEN N''Đã đăng''

WHEN 0 THEN N''Chưa đăng'' END AS Status,

TB_News.Numberreads,

TB_News.Link

FROM TB_Category INNER JOIN

TB_News ON TB_Category.CateID = TB_News.CateID WHERE ''1''=''1'''



--Khai báo điều kiện tìm kiếm

DECLARE @SQLWhere nvarchar(4000)

SET @SQLWhere=''



-- Nếu @Status=1 thì tìm điều kiện Status=1 (Đã đăng)

IF @Status=1

SET @SQLWhere=@SQLWhere+ N' AND TB_News.Status =1 '

-- Nếu @Status=-1 thì tìm điều kiện Status=0 (Chờ đăng)

IF @Status=-1

SET @SQLWhere =@SQLWhere+ ' AND TB_News.Status =0 '

-- Tìm kiếm theo chuyên mục nếu @CateID>0

IF @CateID>0

SET @SQLWhere =@SQLWhere+ ' AND TB_News.CateID = '+cast(@CateID AS char(20)) +''

-- Tìm kiếm theo từ khóa

IF @Keyword<>''

SET @SQLWhere =@SQLWhere+ '

AND ( TB_News.Title LIKE ''%'+@Keyword+ '%''

OR TB_News.Description LIKE ''%'+@Keyword+ '%'')'



-- Khai báo Chuỗi thực thi tìm kiếm

DECLARE @SQLEXEC nvarchar(4000)

-- Kết hợp điều kiện tìm kiếm vào chuỗi truy vấn

SET @SQLEXEC=@SQL+@SQLWhere

-- Thực thi điều kiện tìm kiếm và trả về dữ liệu nếu có

EXEC sp_executesql @SQLEXEC

--PRINT @SQLEXEC

END

Xem lý lịch thành viên http://root.nicetopic.net

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Permissions in this forum:
Bạn không có quyền trả lời bài viết