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

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

Đang tải... (xem toàn văn)

Thông tin tài liệu

Tài liệu thực hành môn CƠ SỞ DỮ LIỆU

Bài Thực hành Số 10 Mục tiêu: Tạo stored procedure CSDL mẫu : ToyWorld Mẫu tạo thủ tục CREATE 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 thi Execute procedureName thamso Xóa thủ tục Drop proc ProcedureName 2. Truy vấn để dùng cho báo cáo dạng sau: SELECT vFirstName, vLastName, vEmailId FROM Shopper Hãy tạo một thủ tục (stored procedure) để tạo truy vấn trên 3. 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 ToyBrand Mẫ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 Category 6. Xóa thủ tục prcAddCategory Drop proc procedureName 7. 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ác 9. Đ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) as SELECT @cBrandName = cBrandName FROM ToyBrand WHERE cBrandId = @cBrandId Sau 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 OUTPUT SELECT @cBrandName Mã 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ại 10. 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 Category CREATE PROCEDURE prcAddCategory @CategoryId char(3), @Category char(20), @Descrip char(30) as INSERT 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ên 12. Thủ tục prcGenOrder tạo mã số hóa đơn nội dung như sau: CREATE PROCEDURE prcGenOrder @OrderNo char(6)OUTPUT as SELECT @OrderNo=Max(cOrderNo) FROM Orders SELECT @OrderNo= CASE WHEN @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) END Khi 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ên b. Mã số hóa đơn, ngày hiện hành, cart ID, và shopperID cần được đưa vào bảng Orders Cá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ục 13. 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ọn b. Phí gói quà (gift wrap charges) cần được cập nhật Các bước trên cần phải atomic Hã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; Or EXECUTE getShopperInfo N'Wi%'; Or EXECUTE getShopperInfo @FirstName = N'%'; Or EXECUTE getShopperInfo N'[CK]ars[OE]n'; Or EXECUTE getShopperInfo N'Hesse', N'Stefen'; Or EXECUTE 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 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 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

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan