STORE PROCEDURE (THỦTỤC)

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 58 - 64)

Chương IV

ThS. Nguyễn ThịThúy Loan

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

NI DUNG  Khái niệm  Thủtục  Thủtục với tham sốđầu vào  Thủtục với tham sốđầu ra  Thủtục có lệnh trảvềReturn  Sửdụng bảng tạm trong thủtục

 Tham sốcursor bên trong thủtục

 Giao tác (Tracsaction)

Khái nim

Khái nim

 Stored procedure là một tập các lệnh Transact

SQL được đặt tên và lưu trữ trong database

server.

 Có thể nhận tham số vào và tham số trảgiá trị

ra.

 Trả về trạng thái thực thi của procedure là

Nguyễn ThịThúy Loan Trang 233 2/12/2011 Khái nim  Thủ tục nội tại là một tập hợp chứa các dòng lệnh, các biến và các cấu trúc điều khiển trong ngôn ngữ Transaction-SQL dùng để thực hiện một hành động nào đó.

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

Khái nim

Các nét đặc trưng

 Tên thủtục.

 Tham sốtruyền giá trịvào.

 Tham sốnhận giá trịra .

 Trong thủ tục nội tại được phép gọi thực thi một thủtục nội tại khác.

 Có tính cục bộbên trong một cơ sởdữliệu lưu trữthủtục đó.

 Có thể gọi thực hiện trong môi trường không phải Microsoft SQL Server.

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

Khái nim

 Lợi ích của thủtục:

o Tốc độxửlý của các thủtục nội tại rất nhanh.

o Việc tổ chức và phân chia các xử lý thành hai

nơi khác nhau: tại máy chủ hoặc tại máy trạm sẽgiúp giảm thời gian xây dựng ứng dụng.

 Thủtục hệthống

o Bắt đầu bằng chữsp_ và hầu hết tất cảcác thủ

tục hệ thống được lưu trữ bên trong CSDL

Master.

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

NI DUNG  Khái niệm  Thủtục  Thủtục với tham sốđầu vào  Thủtục với tham sốđầu ra  Thủtục có lệnh trảvềReturn  Sửdụng bảng tạm trong thủtục

 Tham sốcursor bên trong thủtục

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

Th tc

To mi thtc

Cú pháp:

CREATE PROC[EDURE] Tên_thủ_tục AS

[Declare biến_cục_bộ] các_lệnh

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

Th tc

 Ví dụ: Tạo procedure để liệt kê danh sách tất cảcác mặt hàng. CREATE PROC P_MH AS SELECT * FROM MH  Gọi thực thi thủtục EXEC[UTE] P_MH Th tc

 Ví dụ: Tạo procedure để cập nhật giá cho mặt hàng kẹo là 17000.

create proc P_capnhat as

update ctdh set Dgdat = 17000 where mamh = 'keo'

 Gọi thực thi thủtục exec P_capnhat

Th tc

 Ví dụ: Cho biết số lượng sinh viên trong lớp? CREATE PROC P_DEMSV @MALOP

CHAR(9), @SLSV SMALLINT OUTPUT AS

SELECT @SLSV = COUNT(*) FROM SV

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

Th tc

DECLARE @SL SMALLINT EXEC P_DemSV '07CDTH',

@SLSV = @SL OUTPUT

PRINT 'SO LUONG SINH VIEN O LOP: ' + CAST(@SL AS CHAR(3))

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

Th tc

Thay đổi ni dung thtc

o Cú pháp:

ALTER PROC[EDURE] Tên_thủ_tục AS [Declare biến_cục_bộ]

Các_lệnh.

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

Th tc

Alter Proc P_Demsv @Malop Char(9) As

Select Malop, Tenlop From Lop

Where @Malop = Malop

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

Th tc

Ví dụ: cho lược đồ CSDL như sau:

MAT_HG(MaMH, TenMH, DVT, MaNCC) PH_XUAT(SoPX, NgXuat, SoDH)

CTPX(MaMH, SoPX, SLX, DGX) DDH(MaDH, NgDat)

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

Th tc

Ví dụ: Cho biết mặt hàng nào có SO LUONG bán cao nhất trong tháng 01/2007.

Th tc

CREATE PROC p_MaxSLBan

AS Declare @TenMH varchar(50), @MaxSL int

Select @TenMH = RTRIM(TenMH), @MaxSL = SLXuat From CTPX, PH_XUAT, MAT_HG

Where CTPX.SoPX = PH_XUAT.SoPX And MAT_HG.MaMH = CTPX.MaMH And convert(char(7), NgayXuat, 21) = ‘2007-01’ And SLXuat = (Select Max(SLXuat)

From CTPX, PH_XUAT

Where CTPX.SoPX = PH_XUAT.SoPX

And convert(char(7), NgayXuat, 21) = ‘2007-01’) Print @TenMH + ‘Co doanh so cao nhat la’ +

Cast(@MaxSL as char(10))

Th tc

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

exec p_maxslban

Th tc

Ví dụ: Cho biết mặt hàng nào có SO LUONG bán cao nhất trong tháng 01/2007. Nếu không có thì hãy thông báo.

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

Th tc

alter proc p_maxslban

As declare @tenmh varchar(50), @maxsl int if not exists(select mamh

from ctpx, px

where ctpx.sopx = px.sopx

and convert(char(7), ngxuat, 21)= '2007-01') Begin

Print 'thang 01 nam 2007 chưa bán mặt hàng nào cả';

Return End

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

Th tc

Select @tenmh = rtrim(tenmh), @maxsl = slxuat Fromctpx, px, mh

Where ctpx.sopx = px.sopx and

mh.mamh = ctpx.mamh and convert(char(7), ngayxuat, 21)= ‘2007-01’ and slxuat =

(select max(slxuat) from ctpx, phieu_xuat

where ctpx.sopx=phieu_xuat.sopx

and convert(char(7), ngayxuat, 21)= ‘2007-01’) print @tenmh + ‘co doanh so cao nhat la’ +

cast(@maxsl as char(10))

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

Th tc

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

exec p_maxslban

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

NI DUNG  Khái niệm  Thủtục  Thủtục với tham sốđầu vào  Thủtục với tham sốđầu ra  Thủtục có lệnh trảvềReturn  Sửdụng bảng tạm trong thủtục

 Tham sốcursor bên trong thủtục

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

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 58 - 64)

Tải bản đầy đủ (PDF)

(97 trang)