Cú pháp:
CREATE PROC[EDURE] Tên_thủ_tục @Tên_tham_số kiểu_dữ_liệu [= giá_trị] AS
[Declare biến_cục_bộ] các_lệnh
Nguyễn ThịThúy Loan Trang 254 2/12/2011
Thủ tục với tham số đầu vào
Ví dụ 1: Nhập vào tên sinh viên, cho biết sinh viên đó xuất hiện bao nhiêu lần?
Thủ tục với tham số đầu vào
create proc p_svien @tsv varchar(50)
As if not exists (select rtrim(Tensv) from sv where @tsv = tensv)
print ‘Khong co’ else
begin
declare @sl int
select @sl = count(*) from sv where @tsv = tensv
print 'So lan xh: ' + cast(@sl as char(2))
Thủ tục với tham số đầu vào
Gọi thực hiện thủtục
Nguyễn ThịThúy Loan Trang 257 2/12/2011
Thủ tục với tham số đầu vào
Ví dụ 2: Tạo thủ tục tính tổng giá trị của một phiếu xuất hàng hoá có một tham số vào là số
phiếu xuất với kiểu dữliệu là chuỗi.
Nguyễn ThịThúy Loan Trang 258 2/12/2011
Thủ tục với tham số đầu vào
CREATE PROC p_TGTX @SoPX char(5) AS Declare @TongTG money
Select @TongTG=SUM(SLX*DGX) From CTPX
Where @SoPX=SoPX
print ‘Tri gia phieu xuat’+ cast(@sopx as char(5)) Print ‘là: ’ + CAST(@TongTG as char(10))
Nguyễn ThịThúy Loan Trang 259 2/12/2011
Thủ tục với tham số đầu vào
Gọi thực hiện thủtục
Exec p_TGTX ‘PX003’
Hoặc:
Exec p_TGTX @SoPX=‘PX003’
Nguyễn ThịThúy Loan Trang 260 2/12/2011
Thủ tục với tham số đầu vào
Ví dụ3: Tạo thủtục tính số lượng đặt hàng của một mặt hàng trong một đơn đặt hàng có 2 tham số đầu vào là số đặt hàng và mã mặt hàng.
Nguyễn ThịThúy Loan Trang 261 2/12/2011
Thủ tục với tham số đầu vào
create proc p_tinhsldat @sodh char(4), @mamh char(4)
AS Declare @Sldat int
if not exists (select madh from ctdh
where madh = @sodh and mamh = @mamh) begin
print ‘khong hop le, xem lai don dat hang’ return
end
Nguyễn ThịThúy Loan Trang 262 2/12/2011
Thủ tục với tham số đầu vào
Select @SLDat = SLDat From CTDH
Where @sodh= madh and @mamh = mamh Print ‘Don dat hang ’ + @SoDH
Print ‘Voi ma mat hang ’ + @MaMH
Print ‘Co so luong dat la: ’ + Cast(@SLDat as varchar(10))
Thủ tục với tham số đầu vào
Gọi thực hiện thủtục:
Exec p_TinhSLDat ‘001’, ‘Gao’
Hoặc
exec p_tinhsldat @mamh=‘gao’, @sodh = ‘001’
Thủ tục với tham số đầu vào
Ví dụ4:tạo thủ tục thêm mới dữliệu vào bảng MAT_HANG với tên p_MATHANG_Them gồm có 4 tham số vào chính là các giá trịthêm mới cho các cột trong bảng MAT_HANG: mã mặt hàng, tên mặt hàng, đơn vịtính, mã NCC. Trong đó cần kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh INSERT INTO đểthêm dữliệu vào bảng MAT_HANG. Mã mặt hàng phải duy nhất.
Nguyễn ThịThúy Loan Trang 265 2/12/2011
Thủ tục với tham số đầu vào
Create proc p_mathang_them
@mamh char(4), @tenmh varchar(50), @dvt char(10),@ncc char(10)
As if exists(select mamh from mh where mamh = @mamh)
Begin
print N'Mã mặt hàng ['+@MaMH+'] đã có' return
end
insert into mh(mamh, tenmh, dvt, mancc) values(@mamh, @tenmh, @dvt, @ncc)
Nguyễn ThịThúy Loan Trang 266 2/12/2011
Thủ tục với tham số đầu vào
Gọi thực hiện thủtục
exec p_mathang_them 'Dau', 'Dau nuoc cot dua', 'goi', ' Cty Z'
Nguyễn ThịThúy Loan Trang 267 2/12/2011
NỘI DUNG Khái niệm