Thủ tục với tham số đầu vào

Một phần của tài liệu Bài giảng hệ quản trị cơ sở dữ liệu ths nguyễn thị thúy loan (Trang 64 - 67)

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 tc vi 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 tc vi 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 tc vi 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 tc vi 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 tc vi 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 tc vi tham s đầu vào

Gọi thực hiện thủtục

Exec p_TGTX ‘PX003’

Hoặc: (adsbygoogle = window.adsbygoogle || []).push({});

Exec p_TGTX @SoPX=‘PX003’

Nguyễn ThịThúy Loan Trang 260 2/12/2011

Th tc vi tham s đầu vào

Ví d3: 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 tc vi 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 tc vi 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 tc vi 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 tc vi 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 tc vi 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) (adsbygoogle = window.adsbygoogle || []).push({});

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 tc vi 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

NI DUNG  Khái niệm

Một phần của tài liệu Bài giảng hệ quản trị cơ sở dữ liệu ths nguyễn thị thúy loan (Trang 64 - 67)