+ Trả lời chủ đề
Hiện kết quả từ 1 tới 2 của 2

Chủ đề: Demo code thêm - sửa - xóa trong mô hình quản lý sách thư viện

  1. #1
    Status : trangthanh_alpha đang ẩn
    Tham gia ngày : Aug 2011
    Bài gửi : 516

    Demo code thêm - sửa - xóa trong mô hình quản lý sách thư viện

    Mã:
    ---**  THEM DU LIEU   **---------
    --kiem tra du lieu truoc khi chen
    if exists (select name from sysobjects where name like 'Pro_1')
    drop Procedure Pro_1
    go
    create proc Pro_1(@manm varchar(50), @mapl int, @tennm nvarchar(50), @holotnm nvarchar(100) , @hientrang bit)
    as
    if exists (select mapl from phanloai_nguoimuon where mapl=@mapl)
    begin
    if not exists (select manm from nguoimuon where manm=@manm)
    begin
    insert into nguoimuon(manm,mapl,tennm,holotnm,hientrang)
    values (@manm,@mapl,@tennm,@holotnm,@hientrang)
    print 'Đa chèn thành công'
    end
    else 
    print 'Đa co nguoi muon sach voi ma so '+ cast (@manm as varchar)
    return 0
    end
    go
    exec Pro_1 '10',1,'tuyết','ngọc',1
    go
    exec Pro_1 '14',1,N'tuyết',N'ngọc',1
    go
    exec Pro_1 '15',1,N'tuyết',N'ngọc',1
    go
    exec Pro_1 '16',1,N'tuyết',N'ÁNH',1
    go
    select * from nguoimuon
    ----** CAP NHAT DU LIEU **-----
    ------- CAP NHAT BANG PHAN LOAI NGUOI MUON -------
    IF EXISTS PRO_2(SELECT NAME FROM SYSOBJECTS WHERE NAME LIKE 'PRO_2')
    DROP PROCEDURE PRO_2
    GO
    CREATE PROC PRO_2 (@MAPL INT , @TENPLMOI NVARCHAR(50))
    AS
    IF EXISTS (SELECT MAPL FROM PHANLOAI_NGUOIMUON WHERE MAPL=@MAPL)
    BEGIN
    UPDATE PHANLOAI_NGUOIMUON
    SET TENPL =@TENPLMOI
    WHERE MAPL = @MAPL
    PRINT N'ĐÃ CẬP NHẬT THÀNH CÔNG'
    RETURN 1
    END
    ELSE
    PRINT N'KHÔNG CÓ NGƯỜI MƯỢN SÁCH NÀO CÓ MÃ SỐ ' + @MAPL
    RETURN 0
    GO
    ---THỰC THI
    EXEC PRO_2 1,N'GIANG VIÊN'
    GO
    EXEC PRO_2 3,N'GIANG VIÊN'
    GO
    SELECT * FROM PHANLOAI_NGUOIMUON
    
    ---          XÓA DU LIEU           --------------
    -------**** XOA DU LIEU TRONG BANG NGUOI MUON ***----------
    IF EXISTS( SELECT NAME FROM SYSOBJECTS WHERE NAME LIKE 'PRO_3')
    DROP PROCEDURE PRO_3
    GO
    CREATE PROC PRO_3  @TENPL2 NVARCHAR(50)
    AS
    IF EXISTS(SELECT MAPL FROM PHANLOAI_NGUOIMUON  WHERE  TENPL = @TENPL2)
    BEGIN
    		IF EXISTS(SELECT MAPL FROM PHANLOAI_NGUOIMUON N1 , NGUOIMUON N2 WHERE N1.MAPL = N2.MAPL AND N1.TENPL = @TENPL2)
    		BEGIN
    			PRINT 'KHÔNG THỂ XÓA DỮ LIỆU TRONG BẢNG PHÂN LOẠI NGƯỜI MƯỢN SÁCH VÌ RÀNG BUỘC KHÓA NGOẠI VỚI BẢNG NGƯỜI MƯỢN'
    			RETURN 0
    			END
    			ELSE
    			DELETE FROM PHANLOAI_NGUOIMUON
    			WHERE TENPL = @TENPL2
    			PRINT 'ĐÃ XÓA TEN PHAN LOAI ' + @TENPL2
    			END
    			ELSE 
    			BEGIN
    			PRINT 'KHÔNG CÓ TÊN LOẠI NGƯỜI MUON ' + @TENPL2
    				RETURN 0
    		END
    GO
    ---THỰC THI
    EXEC PRO_3 'GIANG VIEN'
    GO
    SELECT * FROM PHANLOAI_NGUOIMUON
    KẾT QUẢ:
    1.THÊM BỊ TRÙNG DỮ LIỆU - THÔNG BÁO DỮ LIỆU ĐÃ TỒN TẠI

    2.DỮ LIỆU KHÔNG BỊ TRÙNG - CHÈN DỮ LIỆU THÀNH CÔNG

    3.KẾT QUẢ SAU KHI CHÈN DỮ LIỆU

    4. CẬP NHẬT DỮ LIỆU NHƯNG MÃ SỐ LẠI KHÔNG CÓ TRONG BẢNG DỮ LIỆU -> LỖI

    5.MÃ SỐ ĐÃ TỒN TẠI, CẬP NHẬT LẠI DỮ LIỆU THÀNH CÔNG

    6. CHƯA XÓA ĐƯỢC DỮ LIỆU- NHƯNG VẪN HIỆN THÔNG BÁO THÀNH CÔNG - MONG THẦY VÀ CÁC BẠN ĐÓNG GÓP Ý KIẾN GIÚP MÌNH VỚI
    Lần sửa cuối bởi trangthanh_alpha; 12-10-2011 lúc 11:35 PM

  2. #2
    Status : ngocthanh_alpha đang ẩn
    Tham gia ngày : Aug 2011
    Bài gửi : 448
    Code nhìn cũng hay, khá chặc chẽ, nhưng hơi khó hiểu. Dưới đây là một cách khác nhìn khá dễ hiểu cho mấy bạn mới làm quen với procedure.
    Đối tượng thao tác: Phan_Loai_Sach
    ***********Thêm***********
    create procedure [dbo].[ThemPhanLoaiSach]
    @MaLoai int,
    @TenLoai varchar(100)
    as
    begin
    if exists (select MALOAI from PHAN_LOAI_SACH WHERE MALOAI=@MaLoai)
    begin
    PRINT N'MÃ PHÂN LOẠI ĐÃ TỒN TẠI'
    end
    else
    begin
    INSERT INTO PHAN_LOAI_SACH(MALOAI,TENLOAI) VALUES(@MaLoai,@TenLoai)
    end
    end
    go
    ****thực thi*********
    exec ThemPhanLoaiSach 1,'Tin Hoc Dai Cuong'
    go
    select * from Phan_Loai_Sach
    ***********Sửa*********
    create procedure [dbo].[SuaPhanLoaiSach]
    @MaLoai int,
    @TenLoai varchar(100)
    as
    begin
    if exists(select MALOAI FROM PHAN_LOAI_SACH WHERE MALOAI=@MaLoai)
    begin
    update PHAN_LOAI_SACH set MALOAI=@MaLoai,TENLOAI=@TenLoai where MALOAI=@MaLoai
    end
    else
    begin
    print N'Mã phân loại ko tồn tại'
    end
    end
    go
    ***thuc thi****
    exec SuaPhanLoaiSach 1,'Tin Hoc Dai Cuong 1'
    go
    select * from Phan_Loai_Sach
    ***********Xóa***********
    create procedure [dbo].[XoaPhanLoaiSach]
    @MaLoai int
    as
    begin
    if exists(select MASACH from SACH a,PHAN_LOAI_SACH b where a.MALOAI=b.MALOAI)
    begin
    print N'Tồn tại dữ liệu nên không thể xóa'
    end
    else
    begin
    delete FROM PHAN_LOAI_SACH WHERE MALOAI=@MaLoai
    end
    end
    go
    ****Thực Thi****
    exec XoaPhanLoaiSach 1,'Tin Hoc Dai Cuong 1'
    go
    select * from Phan_Loai_Sach
    Lưu ý:
    - Code trên chỉ mang tính chất tham khảo, cách viết procedure còn hạn chế.
    - Rất mong sự đóng góp của các bạn.
    Lần sửa cuối bởi ngocthanh_alpha; 15-10-2011 lúc 02:06 AM
    Học là vô bờ +_+ Kiến thức là vô bến
    http://giasualpha.com <--SỰ LỰA CHỌN ĐÁNG TIN CẬY CỦA BẠN

+ Trả lời chủ đề

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
Trang Chủ Việc Làm Gia Sư Gia sư