Xây dựng cơ sở dữ liệu cho một website phần 5

Loại: Viết store procedure phần 3 

Các bài cần theo dõi của bài viết: Xây dựng cơ sở dữ liệu cho một website

Phần 1: Tạo database

Phần 2: Viết Trigger

Phần 3: Viết store procedure truy vấn, thêm, sửa, xóa một chuyên mục

Phần 4: Viết store procedure hiển thị menu đa cấp

Phần 5: Viết store Procedure thêm, sửa, xóa một bài viết

Phần 6: Viết store procedure hiển thị danh sách bài viết

Phần 7: Viết store procedure tìm kiếm bài viết

Phần 8: Viết store procedure top 10 các bài viết mới và cũ

Tiếp theo chúng ta cần viết các hàm và Store Procedure cho bảng TB_News.

1. Store Procedure thêm, sửa, xóa một bài viết.

Cũng giống như với bảng TB_Category, mình viết spTB_News_Edit để thực hiện cả 3 hành động thêm, sửa, xóa một bài viết.
Nếu @Action=0 => xóa bài viết theo idNews=@idNews
Nếu @Action>0 =>
    Nếu @idNews=0 thí thêm mới bài viết
    Nếu @idNews>0 thì cập nhật bài viết theo idnews=@idnews

Store Procedure spTB_News_Edit  được viết như sau:

-- =============================================
-- Author:        webmaster@hmweb.com.vn
-- Description:   <Thêm, sửa hoặc xóa bài viết>\
-- =============================================
CREATE PROCEDURE [dbo].[spTB_News_Edit]
@Action int,
@idNews int,
@CateID int,
@UserName nvarchar(50),
@Title nvarchar(500),
@Description ntext,
@Content ntext,
@Author nvarchar(150),
@Picture nvarchar(255),
@CreateDate datetime,
@PublishDate datetime,
@Status int,
@Link nvarchar(150)
AS
BEGIN
       -- Nếu @Action=0 --> Xóa bài viết theo @idNews
       IF @Action=0
       BEGIN
            DELETE FROM TB_News WHERE idNews=@idNews
       END
       -- Nếu Nếu @Action=1 --> Thêm mới hoặc sửa  bài viết
       ELSE
            BEGIN
                  --Nếu @idNews=0 --> Thêm mới  bài viết
                  IF @idNews=0
                  BEGIN
                        INSERT INTO TB_News 
                        (
                              CateID, 
                              UserName, 
                              Title, 
                              Description, 
                              Content,
                              Author, 
                              Picture, 
                              CreateDate, 
                              PublishDate, 
                              Status, 
                              Link
                        ) 
                        VALUES
                        (
                              @CateID,
                              @UserName, 
                              @Title, 
                              @Description, 
                              @Content, 
                              @Author, 
                              @Picture, 
                              @CreateDate, 
                              @PublishDate, 
                              @Status, 
                              @Link
                        )
                  END
                  --Nếu @idNews>0 --> Cập nhật bài viết với idNews=@idNews
                  IF @idNews>0
                  BEGIN
                        UPDATE TB_News
                        SET
                              CateID = @CateID,
                              UserName = @UserName,
                              Title = @Title,
                              Description = @Description,
                              Content = @Content,
                              Author = @Author,
                              Picture = @Picture,
                              CreateDate = @CreateDate,
                              PublishDate = @PublishDate,
                              Status = @Status,
                              Link = @Link
                        WHERE idNews=@idNews
                  END
            END
END

2. Store procedure Xóa tất cả bài viết theo chuyên mục
Khi cần xóa hết bài viết của một chuyên mục bạn viết thủ tục như sau:

-- =============================================
-- Author:        webmaster@hmweb.com.vn
-- Description:   <Xóa bài viết theo chuyên mục được chọn>
-- =============================================
CREATE PROCEDURE [dbo].[spTB_News_Delete_ByCateID]
@CateID int
AS
BEGIN
      DELETE FROM TB_News WHERE CateID=@CateID
END

3. Store procedure Xóa tất cả bài viết của một UserName
Khi cần xóa hết bài viết của một UserName bạn viết thủ tục như sau:

Khi cần xóa hết bài viết của một UserName bạn viết thủ tục như sau:
 -- =============================================
-- Author:        webmaster@hmweb.com.vn
-- Description:   <Xóa hết bài viết theo UserName>
-- =============================================
CREATE PROCEDURE [dbo].[spTBNewsDeleteByUserName]
@UserName nvarchar(50)
AS
BEGIN
      DELETE FROM TBNews WHERE UserName=@UserName
END