
- 1 -
SQL Server 2000 : Khái ni m v th t c n i t iệ ề ủ ụ ộ ạ
Gi ng nh ý nghĩa c a vi c s d ng th t c dùng chungố ư ủ ệ ử ụ ủ ụ
trong nh ng ngôn ng l p trình khác, th t c n i t i trongữ ữ ậ ủ ụ ộ ạ
Microsoft SQL Server dùng đ t o ra nh ng x lý th ngể ạ ữ ử ườ
dùng bên trong ng d ng và nh m đ chia nh các x lý theoứ ụ ằ ể ỏ ử
mô hình thi t k x lý top-down, m t cách làm giúp chia nhế ế ử ộ ỏ
m t x lý ph c t p thành các x lý nh d n, đ n gi n hóa cácộ ử ứ ạ ử ỏ ầ ơ ả
x lý ph c t p. ử ứ ạ
1/- Th t c n i là gì ?ủ ụ ộ
Th t c n i t i th t s 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 bên trong ngôn ng Transaction-SQL dùng đ th c hi n m t hành đ ng nàoề ể ữ ể ự ệ ộ ộ
đó, t t c các n i dung c a th t c n i t i s đ c l u tr t i c s d li u c aấ ả ộ ủ ủ ụ ộ ạ ẽ ượ ư ữ ạ ơ ở ữ ệ ủ
Microsoft SQL Server.
Các nét đ c tr ng c a m t th t c n i t i cũng hoàn toàn gi ng các th t c trong cácặ ư ủ ộ ủ ụ ộ ạ ố ủ ụ
ngôn ng l p trình khác : tên th t c n i t i, tham s truy n giá tr vào và tham s đónữ ậ ủ ụ ộ ạ ố ề ị ố
nh n giá tr tr ra. Ngoài ra bên trong m t th t c n i t i b n cũng đ c phép g i th cậ ị ả ộ ủ ụ ộ ạ ạ ượ ọ ự
thi m t th t c n i t i khác đã có tr c đó. Ph m vi ho t đ ng c a các th t c n i t iộ ủ ụ ộ ạ ướ ạ ạ ộ ủ ủ ụ ộ ạ
do ng i dùng t o ra ch có tính c c b bên trong m t c s d li u l u tr th t cườ ạ ỉ ụ ộ ộ ơ ở ữ ệ ư ữ ủ ụ
đó.
M t nét riêng bi t c a th t c n i t i là nó có th đ c g i th c hi n trong môiộ ệ ủ ủ ụ ộ ạ ể ượ ọ ự ệ
tr ng không ph i là Microsoft SQL Server. Khi xây d ng giao di n màn hình trên cácườ ả ự ệ
ngôn ng l p trình khác nhau, b n v n có th g i th c hi n các th t c n i t i m tữ ậ ạ ẫ ể ọ ự ệ ủ ụ ộ ạ ộ
cách d dàng.ễ
Ngoài ra do th t c n i t i đ c l u tr v t lý trong c s d li u c a Microsoft SQLủ ụ ộ ạ ượ ư ữ ậ ơ ở ữ ệ ủ
Server, nên các th t c n i t i s đ c th c thi khá nhanh b i vì n i dung bên trongủ ụ ộ ạ ẽ ượ ự ở ộ
th t c n i t i đã đ c phân tích cú pháp các l nh khi chúng đ c t o m i. L n đ uủ ụ ộ ạ ượ ệ ượ ạ ớ ầ ầ
tiên khi th t c n i t i đ c g i th c hi n thì n i dung các l nh bên trong th t c n iủ ụ ộ ạ ượ ọ ự ệ ộ ệ ủ ụ ộ
t i s đ c biên d ch và l u l i trên b nh , k t các l n k ti p thì th t c n i t iạ ẽ ượ ị ư ạ ộ ớ ể ừ ầ ế ế ủ ụ ộ ạ
s đ c th c thi càng nhanh h n (vì các mã l nh đã đ c l u l i trên b nh ). Đâyẽ ượ ự ơ ệ ượ ư ạ ộ ớ
cũng là m t trong nh ng lý do mà t i sao chúng ta nên s d ng th t c n i t i trongộ ữ ạ ử ụ ủ ụ ộ ạ
Microsoft SQL Server đ th c thi các x lý tính toán.ể ự ử
2/- Các th t c n i t i h th ng :ủ ụ ộ ạ ệ ố
Trong Microsoft SQL Server cung c p cho chúng ta m t s l n các th t c n i t i hấ ộ ố ớ ủ ụ ộ ạ ệ
th ng dùng đ th c hi n các x lý trong vi c qu n tr c s d li u. M t th t c n iố ể ự ệ ử ệ ả ị ơ ở ữ ệ ộ ủ ụ ộ
t i h th ng luôn luôn đ c b t đ u b ng ch ạ ệ ố ượ ắ ầ ằ ữ sp_ và h u h t t t c các th t c n iầ ế ấ ả ủ ụ ộ
t i h th ng đ c l u tr bên trong c s d li u ạ ệ ố ượ ư ữ ơ ở ữ ệ Master.

- 2 -
Vi c làm quen và s d ng nhu n nhuy n các th t c h th ng s giúp b n hi u rõệ ử ụ ầ ễ ủ ụ ệ ố ẽ ạ ể
thêm v cách t ch c c u trúc các b ng h th ng bên d i Microsoft SQL Server.ề ổ ứ ấ ả ệ ố ướ
Ngoài ra còn giúp b n bi t đ c các x lý bí n bên d i ti n ích Enterprise Managerạ ế ượ ử ẩ ướ ệ
sau khi b n th c hi n các hành đ ng ch n l a trong ti n ích đ h a này.ạ ự ệ ộ ọ ự ệ ồ ọ
Ví d :ụ
B n có th t o m i m t ng i dùng có tên là "TTTH", v i m t kh u "T3HNVC" choạ ể ạ ớ ộ ườ ớ ậ ẩ
phép truy c p vào c s d li u ậ ơ ở ữ ệ NorthWind c a Microsoft SQL Server b ng th t củ ằ ủ ụ
h th ng ệ ố sp_addlogin nh sau :ư
Các bài liên quan đ n th t c n i t i h th ng ch h ng d n b n th c hi n vi c tri nế ủ ụ ộ ạ ệ ố ỉ ướ ẫ ạ ự ệ ệ ể
khai m t c s d li u trong Microsoft SQL Server. Do đó s không đ c p đ n cácộ ơ ở ữ ệ ẽ ề ậ ế
th t c n i t i h th ng c a Microsoft SQL Server mà ch trình bày cách th c t o raủ ụ ộ ạ ệ ố ủ ỉ ứ ạ
m t th t c do ng i dùng đ nh nghĩa đ th c hi n các x lý riêng bi t cho ng d ngộ ủ ụ ườ ị ể ự ệ ử ệ ứ ụ
c a b n. Trong các bài k ti p, khi đ c p đ n c m t th t c n i t i thì xem nh nóiủ ạ ế ế ề ậ ế ụ ừ ủ ụ ộ ạ ư
đ n các th t c n i t i do ng i dùng đ nh nghĩa.ế ủ ụ ộ ạ ườ ị
3/- Các l i ích khi s d ng th t c n i t i :ợ ử ụ ủ ụ ộ ạ
B n nên xem xét th t k các l i ích khi s d ng th t c n i t i đ c mô t bên d iạ ậ ỹ ợ ử ụ ủ ụ ộ ạ ượ ả ướ
đ có th áp d ng vào đúng các tr ng h p th c t trong khi xây d ng các ng d ngể ể ụ ườ ợ ự ế ự ứ ụ
theo mô hình khách ch .ủ
• T c đ x lý c a các th t c n i t i s r t nhanh ố ộ ử ủ ủ ụ ộ ạ ẽ ấ b i vì b n thân n i dung c aở ả ộ ủ
các th t c n i t i đ c l u tr và th c hi n ngay t i máy ch . H n th n a, các dủ ụ ộ ạ ượ ư ữ ự ệ ạ ủ ơ ế ữ ữ
li u cũng đ c l u tr trên cùng máy ch nên không c n m t th i gian đ truy n dệ ượ ư ữ ủ ầ ấ ờ ể ề ữ
li u qua h th ng m ng cho các x lý bên trong th t c n i t i b i vì các x lý và dệ ệ ố ạ ử ủ ụ ộ ạ ở ử ữ
li u cùng đ c l u tr trên cùng m t v trí v t lý là máy ch .ệ ượ ư ữ ộ ị ậ ủ
• 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 các b n có th làm gi m th i gian xây d ng ng d ng. B i vìạ ạ ẽ ạ ể ả ờ ự ứ ụ ở
b n thân m t th t c n i t i trong Microsoft SQL Server có th đ c g i th c thiả ộ ủ ụ ộ ạ ể ượ ọ ự
nhi u l n trên các màn hình khác nhau trong các ngôn ng l p trình khác nhau : Visualề ầ ữ ậ
Basic, C++, Delphi, …
• Gi ng nh nh ng l i ích khi s d ng đ i t ng b ng o (View)ố ư ữ ợ ử ụ ố ượ ả ả , b n có th sạ ể ử
d ng th t c n i t i đ phân c p quy n h n (security) cho nh ng ng i s d ng v iụ ủ ụ ộ ạ ể ấ ề ạ ữ ườ ử ụ ớ
các hành đ ng c p nh t d li u nh : thêm, s a, xóa d li u ho c xem ch có quy nộ ậ ậ ữ ệ ư ử ữ ệ ặ ỉ ề
xem n i dung c a các báo cáo.ộ ủ

- 3 -
SQL Server 2000 : Tham s bên trong th t c n i t iố ủ ụ ộ ạ
Th t c n i t i r t h u ích trong mô hình khách ch ,ủ ụ ộ ạ ấ ữ ủ
nh ng nó s tr nên hi u qu h n khi b n bi t cách s d ngư ẽ ở ệ ả ơ ạ ế ử ụ
các tham s đi kèm v i nó. V i nh ng tham s này, b n có thố ớ ớ ữ ố ạ ể
truy n vào các giá tr c n thi t cho các x lý bên trong c a thề ị ầ ế ử ủ ủ
t c n i t i. Bên d i là m t vài h ng d n mà b n c n ghiụ ộ ạ ướ ộ ướ ẫ ạ ầ
nh khi s d ng tham s trong th t c n i t i :ớ ử ụ ố ủ ụ ộ ạ
• B n có th đ nh nghĩa ra m t ho c nhi u tham s có bên trong m t th t c n i t i.ạ ể ị ộ ặ ề ố ộ ủ ụ ộ ạ
• Tên c a các tham s mà b n đ nh nghĩa ch có ph m vi c c b bên trong th t c n iủ ố ạ ị ỉ ạ ụ ộ ủ ụ ộ
t i. Chúng là các tham s hình th c.ạ ố ứ
• Gi ng nh tên c a các tham s trong các ngôn ng l p trình khác, b n có th đ t tênố ư ủ ố ữ ậ ạ ể ặ
tham s trong th t c n i t i m t cách g i nh và duy nh t.ố ủ ụ ộ ạ ộ ợ ớ ấ
• M t th t c đ c phép có t i đa 1024 tham s .ộ ủ ụ ượ ố ố
1/- Tham s đ u vào :ố ầ
Tham s đ u vào là lo i tham s cho phép b n có th truy n vào các giá tr cho nh ngố ầ ạ ố ạ ể ề ị ữ
x lý bên trong m t th t c n i t i. Các giá tr này th t c n thi t cho các hành đ ngử ộ ủ ụ ộ ạ ị ậ ầ ế ộ
tính toán bên trong th t c n i t i.ủ ụ ộ ạ
Cú pháp :
Trong đó :
• Tên tham s :ố tên tham s c a th t c ph i duy nh t trong th t c và nên đ t tênố ủ ủ ụ ả ấ ủ ụ ặ
tham s m t cách g i nh .ố ộ ợ ớ
• Ki u d li u :ể ữ ệ ki u d li u c a tham s quy đ nh lo i d li u t ng ng đ cể ữ ệ ủ ố ị ạ ữ ệ ươ ứ ượ
truy n vào cho th t c.ề ủ ụ

- 4 -
• Giá tr :ị giá tr m c đ nh đ c gán vào tham s khi tham s không đ c nh n giá trị ặ ị ượ ố ố ượ ậ ị
khi th t c đ c g i th c hi n.ủ ụ ượ ọ ự ệ
Ví d :ụ
Đ xây d ng m t th t c n i t i tính t ng giá tr c a m t phi u xu t v t t c n cóể ự ộ ủ ụ ộ ạ ổ ị ủ ộ ế ấ ậ ư ầ
m t tham s vào là s phi u xu t v i ki u d li u là chu i. B n th c hi n l nhộ ố ố ế ấ ớ ể ữ ệ ỗ ạ ự ệ ệ
CREATE PROCEDURE có m t tham s vào nh sau :ộ ố ư
G i th c hi n th t c trên và truy n vào giá tr cho tham s là phi u xu t "X001" đọ ự ệ ủ ụ ở ề ị ố ế ấ ể
tính ra t ng giá tr c a phi u xu t "X001".ổ ị ủ ế ấ
Ho c có th ch đ nh t ng minh tên tham s và giá tr lúc g i th t c.ặ ể ỉ ị ườ ố ị ọ ủ ụ
K t qu tr v :ế ả ả ề
Ví d :ụ
Đ xây d ng m t th t c n i t i tính ra s l ng đ t hàng c a m t v t t bên trongể ự ộ ủ ụ ộ ạ ố ượ ặ ủ ộ ậ ư
m t đ n đ t hàng có hai tham s vào là s đ t hàng và mã v t t đ u có ki u d li uộ ơ ặ ố ố ặ ậ ư ề ể ữ ệ
là chu i. B n th c hi n l nh ỗ ạ ự ệ ệ CREATE PROCEDURE có hai tham s vào nh sau :ố ư

- 5 -
G i th c hi n th t c đ tính ra s l ng đ t hàng c a v t t "DD02" trong đ n đ tọ ự ệ ủ ụ ể ố ượ ặ ủ ậ ư ơ ặ
hàng "D001".
Ho cặ
Ho cặ
K t qu tr v :ế ả ả ề
Nh n xét :ậ

