Bài thc hành môn H qun tr CSDL
B môn H thng thông tin Khoa Công ngh thông tin Đại hc Khoa hc t nhiên
1
ng dn thc hành môn H qun tr CSDL
Ch đề 1
Stored-Procedure & Trigger & Function
Mục đích
- Xây dng Stored procedure và trigger để thc hin c chức năng ca h
thng.
- S dng các lnh Transact-SQL, Cursor.
- i tp thc hành:
o File: Bai_tap_Chu_de_1_-_StoreProcedure_-_Trigger_-_Function.pdf
o File: Dac_ta_CSDL_Quan_ly_thu_vien.pdf (các mc 4.1 4.13; 5.1
5.4).
Table of Contents
1. Stored-Procedure .............................................................................................. 2
1.1. Gii thiu ........................................................................................................................................... 2
1.2. Định nghĩa ........................................................................................................................................ 3
1.3. Cú pháp ............................................................................................................................................. 3
1.3.1. Lnh to Procedure .................................................................................................................. 3
1.3.2. Khai báo biến và gán giá tr cho biến, Ghi chú ...................................................................... 3
1.3.3. Biên dch và gi thc thi mt stored-procedure .................................................................... 3
1.3.4. Lnh cp nht Procedure ......................................................................................................... 4
1.3.5. Lnh xóa Procedure.................................................................................................................. 4
1.4. Ví d .................................................................................................................................................. 4
2. Trigger .............................................................................................................. 5
2.1. Gii thiu ........................................................................................................................................... 5
2.2. Cú pháp ............................................................................................................................................. 5
2.2.1. Lnh to Trigger ....................................................................................................................... 5
2.2.2. Lnh xóa Trigger ...................................................................................................................... 5
2.3. Ví d .................................................................................................................................................. 5
3. Cursor ............................................................................................................... 6
3.1. Cú pháp ............................................................................................................................................. 6
3.2. Ví d .................................................................................................................................................. 6
4. Function ........................................................................................................... 8
4.1. Cú pháp ............................................................................................................................................. 8
4.2. Ví d .................................................................................................................................................. 8
5. Bài tp .............................................................................................................. 9
Bài thc hành môn H qun tr CSDL
B môn H thng thông tin Khoa Công ngh thông tin Đại hc Khoa hc t nhiên
2
1. Stored-Procedure
1.1. Gii thiu
Khi chúng ta to mt ng dng vi Microsoft SQL Server, ngôn ng lp trình Transact-SQL ngôn ng chính
giao tiếp gia ng dng database ca SQL Server. Khi chúng ta tạo các chương trình bng Transact-SQL, hai
phương pháp chính có thể dùng đ u trữ và thc thi cho các chương trình là:
- Chúng ta có th u trữ các chương trình cục b và to các ng dụng để gi các lnh đến SQL Server
x lý các kết qu,
- Chúng ta th lưu trữ nhng chương trình ncác stored procedure trong SQL Server tạo ng
dụng để gi thc thi các stored procedure và x các kết qu.
Đặc tính ca Stored-procedure trong SQL Server :
Chp nhn nhng tham s vào tr v nhng giá tr đưc cha trong các tham s ra để gi
nhng th tc hoc x lý theo .
Cha các lnh của chương trình để thc hin các x lý trong database, bao gm c lnh gi các th
tc khác thc thi.
Tr v các trng thái giá tr để gi nhng th tc hoc thc hin các x theo lô để cho biết vic
thc hin thành công hay tht bi, nếu tht bi thì lý do vì sao tht bi.
Ta có th dùng TransactSQL EXCUTE để thc thi các stored procedure. Stored procedure khác vi các hàm x
lý là giá tr tr v ca chúng không chứa trong tên và chúng không được s dng trc tiếp trong biu thc.
Stored procedure có nhng thun li so với các chương trình Transact-SQL lưu trữ cc b là:
Stored procedure cho phép điều chỉnh chương trình cho phù hợp: Chúng ta ch to
stored procedure mt ln và lưu trữ trong database mt lần, trong chương trình chúng ta có th gi
nó vi s ln bt k. Stored procedure có th đưc ch rõ do một người nào đó tạo ra và s thay đổi
của chúng hn toàn độc lp vi source code của chương trình.
Stored procedure cho phép thc thi nhanh hơn: nếu s x yêu cu một đoạn source code
Transact SQL khá ln hoc vic thc thi mang tính lặp đi lặp li tstored procedure thc hin
nhanh hơn việc thc hin hàng lot các lnh Transact-SQL. Chúng được pn tích cú pháp và tối ưu
hóa trong ln thực thi đầu tiên và mt phiên bn dch của chúng trong đó s được lưu trong bộ nh
để s dng cho lần sau, nghĩa là trong nhng ln thc hin sau chúng không cn phi pn tích cú
pháp và tối ưu lại, mà chúng s s dng kết qu đã được biên dch trong lần đu tiên.
Stored procedure có th làm gim bt vấn đề kẹt đường truyn mng: gi s mt x lý mà
có s dụng hàng trăm lệnh ca Transact-SQL và vic thc hin thông qua tng dòng lệnh đơn, như
vy vic thc thông qua stored procedure s tốt hơn, vì nếu không khi thc hin chúng ta phi gi
hàng trăm lệnh đó lên mạng và điều này s dẫn đến nh trng kt mng.
Stored procedure th s dng trong vấn đ bo mt ca máy: ngưi s dng th
đưc phân cp nhng quyền để s dng c stored procedure y, thm chí h không được phép
thc thi trc tiếp nhng stored procedure này.
Bài thc hành môn H qun tr CSDL
B môn H thng thông tin Khoa Công ngh thông tin Đại hc Khoa hc t nhiên
3
1.2. Định nghĩa
Một Stored procedure được định nghĩa gồm nhng thành phn chính sau:
- Tên ca stored procedure
- Các tham s
- Thân ca stored procedure: bao gm các lnh ca Transact-SQL dùng đ thc thi procedure.
Một stored procedure được to bng lnh Create Procedure, và có th thay đổi bng cách dùng lnh Alter
Procedure, và có tha bng cách dùng lnh Drop Procedure trong lp lnh ca Transact SQL
1.3. pháp
1.3.1. Lnh to Procedure
CREATE PROCEDURE procedure_name
{@parameter data_type input/output }/*các biến tham so ra*/
AS
Begin
[khai báo các biến cho x ]
{Cácu lnh transact-sql}
End
- Ghi c:
o Trong SQL Server, có th ghi tt mt s t khóa mà tên có chiu dài n 4 ký tự. Ví
d: có th thay thế Create Procedure bng Create Proc.
o Tên hàm, tên biến trong SQL Server không phân biệt hoa thường.
1.3.2. Khai báo biến và gán giá tr cho biến, Ghi chú
/*Khai báo biến*/
DECLARE @parameter_name data_type
/*n gtr cho biến*/
SET @parameter_name = value
SELECT @parameter_name = value
/*In thôngo ra màn hình*/
print N‘Chuổi thông báo unicode
--Ghi c1, mt dòng
/*
Ghi chú 2
Nhiu dòng
*/
1.3.3. Biên dchgi thc thi mt stored-procedure
- Biên dch : Chn toàn b mã lnh To stored-procedure Nhn F5
- Gi thc thi mt store-Procedure đã được biên dch bng lnh exec:
EXECUTE procedure_name --Stored-proc không tham s
EXEC procedure_name Para1_value, Para2_value, --Stored-proc có tham s
Bài thc hành môn H qun tr CSDL
B môn H thng thông tin Khoa Công ngh thông tin Đại hc Khoa hc t nhiên
4
1.3.4. Lnh cp nht Procedure
ALTER PROCEDURE procedure_name
[ {@parameter data_type } ]
AS
Begin
[khai báo các biến cho x ]
{Các câu lnh transact-sql}
End
1.3.5. Lnh a Procedure
DROP PROCEDURE procedure_name
1.4. d
- Tạ o stored-procedure tính tổng của 2 số nguyên
--To stored-procedure sp_tong
CREATE PROCEDURE sp_Tong
@So1 int, @So2 int, @Tong int out
AS
Begin
SET @Tong = @So1 + @So2;
End
--Biên dch stored-procedure F5
--Kim tra
Declare @Sum int
Exec sp_Tong 1, -2, out @Sum
Select @Sum
- Tạo stored procedure liệt kê những thông tin của đầu sách, thông tin tựa sách và số lượng ch
hiện chưa được mượn của một đầu sách cụ thể (ISBN).
CREATE PROCEDURE sp_ThongtinDausach
@isbn int
AS
Begin
SELECT tuasach, tacgia, ngonngu, bia, trangthai, count(*)
FROM dausach ds, tuasach ts, cuonsach cs
WHERE
ds.ma_tuasach = ts.ma_tuasach AND
ds.isbn = cs.isbn AND
ds.isbn = @isbn AND
tinhtrang = yes
GROUP BY tuasach, tacgia, ngonngu, bia, trangthai
End
Bài thc hành môn H qun tr CSDL
B môn H thng thông tin Khoa Công ngh thông tin Đại hc Khoa hc t nhiên
5
2. Trigger
2.1. Gii thiu
Trigger là một trường hp đc bit ca store procedure, nó shiu lực khi chúng ta thay đổi d liu trên mt
bng d liu c th, hoc các x lý làm thay đổi d liu ca các lnh: insert, update, delete. Trigger có th cha
các lnh truy vn t các bng khác hoc bao gm nhng lnh SQL phc tp.
Mt s thun li khi s dng trigger:
Trigger chy mt cách t động: chúng đưc kích hot ngay tc thì khi có s thay đi d liu
trên bng d liu.
Trigger có th thc hin cascade khi vic thi hành có ảnh hưởng đến nhng bng liên quan.
Trigger có nhng hiu lc ít b hn chế hơn so với ràng buc giá tr nghĩa là có thể ràng buc
tham chiếu đến nhng ct ca nhng bng d liu khác.
Khi trigger được kích hot bi 1 lnh Transact-SQL insert để thêm mt b mi vào bng AAA thì b
mới này được lưu tạm thi vào mt bng tm có tên là inserted có cùng cu trúc vi bng AAA.
Khi kết thúc trigger này thì b d liu mi tht s u xuống CSDL.
ơng tự đối vi lnh delete, các b d liu b xóa s chuyn tm vào bng tm deleted.
2.2. pháp
2.2.1. Lnh to Trigger
Create Trigger trigger_name on table_name
For [insert,update,delete]
As
Begin
{Khai báo các biến x lý}
{Các lnh Transact-SQL}
End
2.2.2. Lnh a Trigger
Drop Trigger trigger_Name
2.3. d
Tạo trigger cho thao tác xóa một đầu ch trong bảng Muon.
CREATE TRIGGER tg_delMuon ON muon
FOR delete
AS
Begin
DECLARE @isbn int, @ma_cuonsach smallint
SELECT @isbn = isbn, @ma_cuonsach = ma_cuonsach
FROM deleted
UPDATE cuonsach
SET tinhtrang = yes
WHERE isbn = @isbn AND ma_cuonsach = @ma_cuonsach
End