1. Trang chủ
  2. » Công Nghệ Thông Tin

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

6 796 2

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 54,5 KB

Nội dung

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

Trang 1

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 có 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 có dạng như sau vào bảng ToyBrand

Mẫu insert

INSERT Category VALUES('CategoryId','Category','Descrip')

Trang 2

5 Tạo một thủ tục(stored procedure) có tên là prcAddCategory dùng để thêm dữ liệu có 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

Trang 3

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

Trang 4

12 Thủ tục prcGenOrder tạo mã số hóa đơn có 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:

Trang 5

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

Trang 6

where siToyQoh <60

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

TỪ KHÓA LIÊN QUAN

w