Diễn đàn lớp CDTH0805/27

Học tập|Chia sẽ
 
Trang ChínhCalendarTrợ giúpTìm kiếmĐăng kýĐăng Nhập

Share | 
 

 Code một số bài tập SQL 2

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
MiNA
V.I.P
V.I.P
avatar

Tổng số bài gửi : 59
Join date : 10/11/2010
Age : 26
Đến từ : BP

Bài gửiTiêu đề: Code một số bài tập SQL 2   Tue Nov 16, 2010 6:29 pm

Bài 1



Procedure Insert Nhà cung cấp

Code:
Create Procedure P_Insert_NCC
(
   @MaNCC nvarchar(4),
   @TenNCC nvarchar(50),
   @DiaChi nvarchar(max),
   @DienThoai nvarchar(20)
)
As
Begin
   Insert Into tbl_NhaCungCap(MaNCC,TenNCC,DiaChi,DienThoai)
   Values(@MaNCC,@TenNCC,@Diachi,@DienThoai)
End

Procedure Insert Nhà cung cấp có kiểm tra khóa chính MaNCC

Code:
Create Procedure P_InsertNCC
(
   @MaNCC nvarchar(4),
   @TenNCC nvarchar(50),
   @DiaChi nvarchar(max),
   @DienThoai nvarchar(20)
)
As
If not exists(Select *From tbl_NhaCungCap Where MaNCC=@MaNCC)
   Begin
      Insert Into tbl_NhaCungCap(MaNCC,TenNCC,DiaChi,DienThoai)
      Values(@MaNCC,@TenNCC,@Diachi,@DienThoai)
   End
Else
   Raiserror('Ma Nha Cung Cap khong hop le!',16,1)


Procedure Select Nhà cung cấp

Code:
Create Procedure P_Select_NCC
(@MaNCC nvarchar(4))
As
Begin
   Select*
   From tbl_NhaCungCap
   Where MaNCC=@MaNCC
End

Procedure Update Nhà cung cấp

Code:
Create Procedure P_Update_NCC
(
   @MaNCC nvarchar(4),
   @TenNCC nvarchar(50),
   @DiaChi nvarchar(max),
   @DienThoai nvarchar(20)
)
As
Begin
   Update tbl_NhaCungCap
   Set TenNCC=@TenNCC,DiaChi=@DiaChi,DienThoai=@DienThoai
   Where MaNCC=@MaNCC
End

Procedure Delete Nhà cung cấp

Code:
Create Procedure P_Delete_NCC
(@MaNCC nvarchar(4))
As
If exists(Select *From tbl_NhaCungCap Where MaNCC=@MaNCC)
   Begin
      Delete From tbl_NhaCungCap
      Where MaNCC=@MaNCC
   End
Else
   Raiserror('Ma Nha Cung Cap khong hop le!',16,1)

Function Select Nhà cung cấp

Code:
Create Function F_Select_NCC
   (
      @MaNCC nvarchar(4)
   )
Returns Table
As
Return (Select * From tbl_NhaCungCap Where MaNCC=@MaNCC)

Thực thi hàm F_Select_NCC

Code:
Select* From dbo.F_Select_NCC('NC01')
Về Đầu Trang Go down
http://vn.360plus.yahoo.com/mina-blog
MiNA
V.I.P
V.I.P
avatar

Tổng số bài gửi : 59
Join date : 10/11/2010
Age : 26
Đến từ : BP

Bài gửiTiêu đề: Re: Code một số bài tập SQL 2   Tue Nov 16, 2010 7:28 pm

Bài 2

Có bảng tbl_SinhVien



1. Giả sử có hàm F_Thu thực hiện query gồm thông tin MaSV, TenSV, NgaySinh, SinhNhatThu
2. Viết hàm nội tuyến liệt kê danh sách sinh viên có mã sinh viên >=50 với tham số @MaSV truyền vào
3. Viết hàm nội tuyến gồm nhiều câu lệnh trích lọc sinh viên có MaSV >=50 và MaSV<=100 sau đó Insert vào bảng với biến bảng @DSSV(MaSV,TenSV,NgaySinh,DiaChi)

Hàm F_Thu
Code:

Create Function F_Thu
(@Ngay datetime)
Returns varchar(10)
As
Begin
Declare @st nvarchar(10)
Select @st=case datepart(dw,@Ngay)
When 1 Then 'Chủ nhật'
When 2 Then 'Thứ hai'
When 3 Then 'Thứ ba'
When 4 Then 'Thứ tư'
When 5 Then 'Thứ năm'
When 6 Then 'Thứ sáu'
Else 'Thứ bảy'
End
Return @st
End

1. Câu lệnh SQL

Code:
Select MaSV, TenSV,NgaySinh, dbo.F_Thu(NgaySinh) As SinhNhatThu
From tbl_SinhVien

2. Viết hàm

Code:
Create Function F_FilterSV1
(@MaSV int)
Returns Table
As
Return
(
   Select * From tbl_SinhVien
   Where MaSV>@MaSV
)

Thực thi

Code:
Select * From dbo.F_FilterSV1(50)

3. Viết hàm

Code:
Create Function F_FilterSV2
(@Ma1 int, @Ma2 int)
Returns @DSSV Table
(
   MaSV int,
   TenSV nvarchar(50),
   NgaySinh datetime,
   DiaChi nvarchar(100)
   
)
As
Begin
   Insert Into @DSSV
   Select MaSV, TenSV,NgaySinh,DiaChi
   From tbl_SinhVien
   Where MaSV Between @Ma1 and @Ma2
Return
End

Thực thi

Code:
Select * From dbo.F_FilterSV2(50,100)


Về Đầu Trang Go down
http://vn.360plus.yahoo.com/mina-blog
MiNA
V.I.P
V.I.P
avatar

Tổng số bài gửi : 59
Join date : 10/11/2010
Age : 26
Đến từ : BP

Bài gửiTiêu đề: Re: Code một số bài tập SQL 2   Tue Nov 16, 2010 11:28 pm

Bài 3

Bảng

Tbl_HoaDon(MaHD int, MaKH nvarchar(4))
Tbl_ChiTietHoaDon(MaHD int, MaSP nvarchar(4), SoLuong int, DonGia float)
Tbl_SanPham(MaSP nvarchar(4), TenSP nvarchar(30))

1. Viết thủ tục cho biết hóa đơn có doanh số nhiều nhất
2. Viết hàm nội tuyến với tham số là MaHD, cho biết sản phẩm có số lượng nhiều nhất
3. Viết hàm lấy thông tin của một hóa đơn gồm thông tin MaHD, MaSP, TenSP, SoLuong,DonGia

Câu 1:

Code:
Create Procedure dbo.P_HDdoanhSoMax
As
Begin
   Select top 1 MaHD, sum(SoLuongBan*DonGiaBan) as ThanhTien
   From tbl_ChiTietHoaDon
   Group by MaHD
   Order By ThanhTien desc
End

Câu 2:

Code:
CREATE FUNCTION dbo.F_SoLuongMax
(
   @MaHD int
)
RETURNS TABLE
AS
Return
   --Lay MaSP
   Select MaHD, MaSP,SoLuongBan
   From tbl_ChiTietHoaDon
   Where MaHD=@MaHD and SoLuongBan=(   
   --Lay so luong ban ra nhieu nhat trong bang CTHD
   Select max(SoLuongBan) From tbl_ChiTietHoaDon Where MaHD=@MaHD)


Thực thi
Code:

Select * From dbo.F_SoLuongMax(2)

Câu 3:

Code:
CREATE FUNCTION dbo.F_ThongTinHD
(
   @MaHD int
)
RETURNS @InfoCheck Table
(
   MaHD int,
   MaSP nvarchar(4),
   TenSP nvarchar(30),
   SoLuongBan int,
   DonGiaBan float,
   MaKH nvarchar(4)
)
AS
   BEGIN
      Insert Into @InfoCheck
      Select tbl_HoaDon.MaHD,tbl_SanPham.MaSP,TenSP,SoLuongBan,DonGiaBan,MaKH
      From tbl_SanPham inner join (tbl_ChiTietHoaDon inner join tbl_HoaDon
      On tbl_ChiTietHoaDon.MaHD=tbl_HoaDon.MaHD) on                                              tbl_ChiTietHoaDon.MaSP=tbl_SanPham.MaSP
      Where tbl_HoaDon.MaHD=@MaHD
   RETURN
   END

Thực thi

Code:

Select * From dbo.F_ThongTinHD(2)



Về Đầu Trang Go down
http://vn.360plus.yahoo.com/mina-blog
Sponsored content




Bài gửiTiêu đề: Re: Code một số bài tập SQL 2   

Về Đầu Trang Go down
 
Code một số bài tập SQL 2
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Chia Sẻ 1 số CODE hay
» [Share] CODE GET LINK NHẠC TỪ SOUNDCLOUD BẰNG PHP
» Share code web mạng xã hội gần giống Facebook (phpFox)
» [Share] code làm web phim - MTDb – Streaming Plugin – Cập nhập 11.10
» tivi belco cần giúp

Permissions in this forum:Bạn không có quyền trả lời bài viết
Diễn đàn lớp CDTH0805/27 :: Tài Liệu | Bài tập-
Chuyển đến