Tải bản đầy đủ (.docx) (3 trang)

Code SQL Server Procedure

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (34.25 KB, 3 trang )

--1) Viết một thủ tục tính tổng tiền thu (TotalDue) của mỗi khách hàng
trong một tháng bất kỳ
-- của một năm bất kỳ (tham số tháng và năm) được nhập từ bàn phím, thông
tin gồm: CustomerID, SumofTotalDue =Sum(TotalDue)
create proc totalDue @thang datetime,@nam datetime
as
begin
select CustomerID,sumofTotal=SUM(SubTotal)
from Sales.SalesOrderHeader
where MONTH(OrderDate)=@thang and YEAR(OrderDate)=@nam
group by CustomerID
end
exec totalDue 7,2005
--4) Tạo thủ tục đặt tên là TongThu có tham số vào là mã nhân viên, tham
số đầu
--ra là tổng trị giá các hóa đơn nhân viên đó bán được. Sử dụng lệnh
RETURN để trả về trạng thái thành công hay thất bại của thủ tục.
create proc TongThu @manv int,@tonghd money output
as
begin
select @tonghd=SUM(SubTotal)
from Sales.SalesOrderHeader
where SalesPersonID=@manv
return 1
if @tonghd>0 return 1
else return 0
end
declare @tong money
exec TongThu 282,@tong output
print convert(char(10),@tong)
--10) Viết thủ tục Sp_Update_Product


-- có tham số Productid dùng để tăng listprice lên 10% nếu sản phẩm này
tồn tại, ngược lại hiện thông báo không có sản phẩm này.
alter proc sp_up @masp int
as
begin
if @masp is not null
begin
select ProductID,ListPrice=ListPrice+0.1*ListPrice
from Production.Product
where ProductID=@masp
end
else print'Ko co sp nay'
end
exec sp_up null
--9) Viết thủ tục XoaHD, dùng để xóa 1 hóa đơn trong bảng
Sales.SalesOrderHeader khi biết SalesOrderID. Lưu ý trước khi xóa mẫu tin
trong
--Sales.SalesOrderHeader thì phải xóa các mẫu tin của hoá đơn đó
--trong Sales.SalesOrderDetail. Nếu không xoá được hoá đơn thì cũng
không được phép xóa Sales.SalesOrderDetail của hóa đơn đó.
create proc xoahd @mahd int
as


begin
if exists(select * from Sales.SalesOrderDetail where
SalesOrderID=@mahd)
begin
delete from Sales.SalesOrderDetail where SalesOrderID=@mahd
delete from Sales.SalesOrderHeader where SalesOrderID=@mahd

end
else
begin
delete from Sales.SalesOrderHeader where SalesOrderID=@mahd
end
end
--7) Tạo thủ tục hiển thị tên và số tiền mua của cửa hàng mua nhiều hàng
nhất theo năm đã cho.
create proc hienthi @nam datetime
as
begin
select top 1 name,SubTotal from Purchasing.PurchaseOrderHeader poh
join Purchasing.Vendor v
on poh.VendorID=v.BusinessEntityID
where YEAR(OrderDate)=@nam
order by SubTotal DESC
end
exec hienthi 2007
--Cursor
alter proc @inkhmuasp int
as
begin
declare @makh int,@ten nvarchar(50)
declare dskh cursor
for
select CustomerID,FirstName+' '+LastName as name
from Person.Person p join Sales.SalesOrderHeader soh on
p.BusinessEntityID=soh.CustomerID
open dskh
fetch next from dskh

into @makh,@ten
print 'Ma khach hang' +space(5)+'Ten'
while @@FETCH_STATUS=0
begin
print convert(char(5),@makh)+space(5)+convert(char(5),@ten)
begin
declare @masp int,@soluong int,@gia int
declare dssp cursor
for
select ProductID,OrderQty,UnitPrice from
Sales.SalesOrderDetail sod join Sales.SalesOrderHeader soh on
sod.SalesOrderID=soh.SalesOrderID
where CustomerID=@makh
open dssp
fetch next from dssp
into @masp,@soluong,@gia
print 'Ma SP'+space(5)+'So luong' +space(5)+'gia'
while @@FETCH_STATUS=0


begin
print convert(char(5),@masp)
+space(5)+convert(char(5),@soluong)+space(5)+convert(char(5),@gia)
fetch next from dssp
into @masp,@soluong,@gia
end
end
close dssp
deallocate dssp
fetch next from dskh

into @makh,@ten
end
close dskh
deallocate dskh
end
exec inkhmuasp



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×