Bài tập thực hành môn cơ sở dữ liệu

6 462 0
  • Loading ...
1/6 trang

Thông tin tài liệu

Ngày đăng: 28/03/2014, 20:54

Tài liệu thực hành môn CƠ SỞ DỮ LIỆU Bài Thực hành Số 10Mục tiêu: Tạo stored procedure CSDL mẫu : ToyWorldMẫu tạo thủ tụcCREATE PROCEDURE uspGetEmployees2@FirstName nvarchar(50) @LastName nvarchar(50), AS SELECT FirstName, LastName, Job FROM Employees WHERE FirstName LIKE @FirstName AND LastName LIKE @LastName;Thực thiExecute procedureName thamsoXóa thủ tụcDrop proc ProcedureName2. Truy vấn để dùng cho báo cáo dạng sau:SELECT vFirstName, vLastName, vEmailIdFROM ShopperHãy tạo một thủ tục (stored procedure) để tạo truy vấn trên3. Tạo một thủ tục (stored procedure) nhận vào mã đồ chơi và hiển thị tên và giá cả của món đồ chơi đó4. Tạo một thủ tục (stored procedure) để thêm các dữ liệu dạng như sau vào bảng ToyBrandMẫu insert INSERT Category VALUES('CategoryId','Category','Descrip')5. Tạo một thủ tục (stored procedure) tên là prcAddCategory dùng để thêm dữ liệu dạng sau vào bảng Category6. Xóa thủ tục prcAddCategoryDrop proc procedureName7. Tạo thủ tục prcCharges trả về phí chuyển hàng (shipping charge) và phí gói hàng (wrapper charge) của 1 hóa đơn được cho.8. Tạo một thủ tục prcHandlingCharges nhận vào 1 số hóa đơn và hiển thị phí quản lý (handling charge). Thủ tục này nên sử dụng thủ tục prcCharges Gợi ý: Handling Charges = Shipping Charges + Gift Wrap Charges. Trong một thủ tục gọi một thủ tục khác9. Đoạn chương trình sau được dùng để tạo một thủ tục hiển thị nhãn hiệu (brand name) tương ứng cho một mã nhãn hiệu (brand id)CREATE PROCEDURE prcBrand @cBrandId char(3) OUTPUT,@cBrandName char(16)asSELECT @cBrandName = cBrandNameFROM ToyBrand WHERE cBrandId = @cBrandIdSau khi tạo xong, thủ tục được chạy thử với các lệnh sau:DECLARE @cBrandName char(16)exec prcBrand '001',@cBrandName OUTPUTSELECT @cBrandNameMã phát lỗi thay vì hiển thị tên nhãn hiệu tương ứng. Hãy sửa lỗi và chạy lại10. Tạo một thủ tục prcState trong CSDL TOYWORLD để hiển thị tên và địa chỉ của tất cả khách mua hàng ở một tiểu bang được cho. 11. Đọan chương trình sau dùng để tạo một thủ tục bổ sung chi tiết của một chủng lọai mới vào bảng CategoryCREATE PROCEDURE prcAddCategory @CategoryId char(3),@Category char(20), @Descrip char(30)asINSERT Category VALUES('CategoryId','Category','Descrip')Sau khi thủ tục được tao xong, các lệnh sau được dùng để chạy thử:exec prcAddCategory '017','War Games','A wide range of toy guns'Lệnh bị báo lỗi và không thực hiện được. Hãy sửa lỗi cho thủ tục trên12. Thủ tục prcGenOrder tạo mã số hóa đơn nội dung như sau:CREATE PROCEDURE prcGenOrder@OrderNo char(6)OUTPUTasSELECT @OrderNo=Max(cOrderNo) FROM OrdersSELECT @OrderNo=CASEWHEN @OrderNo >=0 and @OrderNo<9 Then'00000'+Convert (char, @OrderNo+1)WHEN @OrderNo>=9 and @OrderNo<99 Then'0000'+Convert (char, @OrderNo+1)WHEN @OrderNo>=99 and @OrderNo<999 Then'000'+Convert (char, @OrderNo+1)WHEN @OrderNo>=999 and @OrderNo<9999 Then'00'+Convert (char, @OrderNo+1)WHEN @OrderNo>=9999 and @OrderNo<99999 Then'0'+Convert (char, @OrderNo+1)WHEN @OrderNo>=99999 Then Convert (char, @OrderNo+1)ENDKhi khách hàng xác nhận mua, các bước sau cần được thực hiện:a. Mã số hóa đơn được tạo nhờ thủ tục trênb. Mã số hóa đơn, ngày hiện hành, cart ID, và shopperID cần được đưa vào bảng OrdersCác bước trên phải được thực hiện cùng 1 lần (phải atomic)Hãy chuyển giao dịch trên thành một thủ tục với cart Id và shopper ID là tham số của thủ tục13. Khi người mua hàng(shopper) yêu cầu gói quà cho món đồ chơi họ mua, các bước cần thực hiện với hóa đơn của khách như sau: (update tenbang set tencot=bieuthuc where dieukien)a. Thuộc tính cGiftWrap nên lưu với giá trị ‘Y’ và thuộc tính cWrapperId nên được cập nhật với mã gói quà (wrapper id) đã được khách chọnb. Phí gói quà (gift wrap charges) cần được cập nhậtCác bước trên cần phải atomicHãy chuyển giao dịch trên thành một thủ tục với số hóa đơn, mã đồ chơi, và mã gói quà là tham số 14. Tạo 1 thủ tục getShopperInfo hiển thị tên, họ khách hàng theo mẫu gợi ý của người gọi. Nếu người gọi không cung cấp mẫu tên họ cần xem thì mặc định thủ tục trả về tất cả người mua hàng có tên bắt đầu là B. Ví dụ có thể gọi thủ tục theo các cách sau:EXECUTE getShopperInfo; OrEXECUTE getShopperInfo N'Wi%'; OrEXECUTE getShopperInfo @FirstName = N'%'; OrEXECUTE getShopperInfo N'[CK]ars[OE]n'; OrEXECUTE getShopperInfo N'Hesse', N'Stefen'; OrEXECUTE getShopperInfo N'H%', N'S%';CREATE PROCEDURE HumanResources.uspGetEmployees2 @LastName nvarchar(50) = N'D%', @FirstName nvarchar(50) = N'%'AS SELECT FirstName, LastName, JobTitle, Department FROM HumanResources.vEmployeeDepartment WHERE FirstName LIKE @FirstName AND LastName LIKE @LastName;15. Tạo 1 thủ tục hiển thị phiếu đặt hàng theo từng nhãn hiệu như mẫu sau:Tên hiệu Mã đồ chơi Tên đồ chơi Số lượngĐồ chơi cần phải đặt thêm hàng nếu số lượng tồn kho dưới 20, số lượng đặt tùy thuộc vào đơn giá: nếu giá <$10, thì số lượng đặt là 20, giá <$20 thì số lượng đặt là 10, ngược lại số lượng đặt là 5.create proc prcPurchaseOrderASselect cBrandName,cToyId,vToyName,Quantity = casewhen mToyRate< $10 then 20when mToyRate> $20 then 10else 5endfrom dbo.Toys t join dbo.ToyBrand b on b.cBrandId = t.cBrandIdwhere siToyQoh <60 . HumanResources.uspGetEmployees2 @LastName nvarchar(50) = N'D%', @FirstName nvarchar(50) = N'%' AS SELECT FirstName, LastName, JobTitle, Department FROM HumanResources.vEmployeeDepartment . số lượng đặt tùy thuộc vào đơn giá: nếu giá < $10, thì số lượng đặt là 20, giá <$20 thì số lượng đặt là 10, ngược lại số lượng đặt là 5. create proc prcPurchaseOrder AS select. prcPurchaseOrder AS select cBrandName,cToyId,vToyName,Quantity = case when mToyRate< $10 then 20 when mToyRate> $20 then 10 else 5 end from dbo.Toys t join dbo.ToyBrand b on b.cBrandId = t.cBrandId where
- Xem thêm -

Xem thêm: Bài tập thực hành môn cơ sở dữ liệu, Bài tập thực hành môn cơ sở dữ liệu, Bài tập thực hành môn cơ sở dữ liệu

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay