Đồ án học phần Stored Procedure trong SQL Server Các thủ tục trong hệ quản trị cơ sở dữ liệu.Báo cáo đồ án học phần Chuyên ngành Công Nghệ Thông Tin.Chương trình Quản lý sinh viên được xây dựng trên phần mềm SQL Server bằng nhưng ngôn ngữ mô tả dữ liệu, thao tác dữ liệu, truy vấn dữ liệu, hay ngôn ngữ hỏi đáp có cấu trúc và ngôn ngữ quản lý dữ liệu. Để đơn giản hơn cho các câu lệnh thực hiện người ta đã sử dụng Stored Procedure – Thủ tục trong SQL Server để gọi dữ liệu nhanh hơn và ngắn gọn các câu lệnh thực thi hơn.
Trang 1TRƯỜNG ĐHCN XKHOA: ĐI NĐI N T - CÔNG NGHỆ Ệ Ử Ệ
H tên sinh viên: ọ X
Tên đ tài: ề Stored Procedure trong SQL
Trang 3L I C M N Ờ Ả Ơ
Đ hoàn thành để ược đ án này em xin đồ ượ ử ờ ả ơc g i l i c m n chân thành đ nế
Các th y cô trong trầ ường Đ i H c Công Nghi p X nói chung và các th y cô trongạ ọ ệ ầKhoa Đi n Đi n T - Công Ngh Thông Tin nói riêng, đã giúp em h c t p trongệ ệ ử ệ ọ ậ
su t quá trình h c t p t i trố ọ ậ ạ ường trong 2 năm qua
Cô giáo hướng d n đ tài – ẫ ề XX, Gi ng viên Khoa Đi n - Đi n T - Công Nghả ệ ệ ử ệThông Tin, Trường Đ i H c Công Nghi p ạ ọ ệ X Đã h t lòng giúp đ , hế ỡ ướng d n, chẫ ỉ
d n t n tình đ em có th hoàn thành đẫ ậ ể ể ược đ tài này.ề
Các b n trong l p ạ ớ CNTT1 và các anh ch khóa trên đã góp ý trong quá trình làmị
đ tài đ đề ể ược hoàn ch nh h n.ỉ ơ
Trang 4L I NÓI Đ U Ờ Ầ
Gi i thi u chung: ớ ệ
V i s phát tri n m nh c a khoa h c kĩ thu t trong cu c s ng ngày nayớ ự ể ạ ủ ọ ậ ộ ốthì công ngh thông tin là m t trong nh ng ngành khoa h c ngày càng đệ ộ ữ ọ ược quantâm và s d ng r ng rãi trong m i lĩnh v c c a cu c s ng V i nh ng u đi mử ụ ộ ọ ự ủ ộ ố ớ ữ ư ể
m nh có th ng d ng đạ ể ứ ụ ược nhi u trong cu c s ng công ngh thông tin đã giúpề ộ ố ệcho công vi c qu n lý đệ ả ược d dàng h n Đ qu n lý m t công vi c c th c aễ ơ ể ả ộ ệ ụ ể ủ
m t c quan nào đó thì ngộ ơ ười qu n lý th c hi n r t nhi u đ ng tác Nh có cácả ự ệ ấ ề ộ ờ
ph n m m thì công vi c đó tr nên đ n gi n h n r t nhi u.ầ ề ệ ở ơ ả ơ ấ ề
Ví d nh qu n lý sinh viên c a m t trụ ư ả ủ ộ ường , ta ph i xây d ng m t hả ự ộ ệ
th ng qu n lý c s d li u v sinh viên Do đó yêu c u tin h c hóa các quy trìnhố ả ơ ở ữ ệ ề ầ ọ
th c hi n trong qu n lý là t t y u, ph c v vi c ki m tra thông tin sinh viên m tự ệ ả ấ ế ụ ụ ệ ể ộcách nhanh chóng
Gi i thi u đ tài: ớ ệ ề
Chương trình Qu n lý sinh viên đả ược xây d ng trên ph n m m SQL Serverự ầ ề
b ng nh ng ngôn ng mô t d li u, thao tác d li u, truy v n d li u, hay ngônằ ư ữ ả ữ ệ ữ ệ ấ ữ ệ
ng h i đáp có c u trúc và ngôn ng qu n lý d li u Đ đ n gi n h n cho cácữ ỏ ấ ữ ả ữ ệ ể ơ ả ơcâu l nh th c hi n ngệ ự ệ ười ta đã s d ng ử ụ Stored Procedure – Th t c trong SQLủ ụServer đ g i d li u nhanh h n và ng n g n các câu l nh th c thi h n.ể ọ ữ ệ ơ ắ ọ ệ ự ơ
V y đ tài c a em là ậ ề ủ “ Stored Procedure trong SQL Server ” tìm hi u vể ề
Trang 5NH T KÝ TH C HI N Đ TÀI Ậ Ự Ệ Ề
Th i gian ờ Công vi c ệ Ghi chú
14/10/2018 Nh n đ tài và giáo viên hậ ề ướng d nẫ
16/10-20/10 Nghiên c u tài li u tham kh o v đ tài ứ ệ ả ề ề
21/10 G p giáo viên hặ ướng d nẫ
22/10 Tìm hi u đ tàiể ề
23/10-28/10 Th c hi n demo chự ệ ương trình
28/10 G p giáo viên hặ ướng d nẫ
29/10-15/11 Làm báo cáo đ ánồ
5/11 G p giáo viên hặ ướng d nẫ
16/11-22/11 Ch nh s a và hoàn thi n báo cáoỉ ử ệ
23/11 G p giáo viên hặ ướng d nẫ
24/11 N p báo cáo và đĩa CD cho giáo viên hướộ ng d nẫ
Trang 6M C L C Ụ Ụ
Trang 7DANH M C VI T T T Ụ Ế Ắ
Trang 8M Đ U Ở Ầ
1. Đ t v n đ : ặ ấ ề
Khi ta duy t hay x lý d li u trong c s d li u SQL Server, ngôn ngệ ử ữ ệ ơ ở ữ ệ ữ(Structured Query Language ) là ngôn ng th c thi hi u qu nh t Do đó, khiữ ự ệ ả ấtính toán v i lớ ượng l n d li u trong SQL Server, ta nên s d ng đ i tớ ữ ệ ử ụ ố ượng
SP đ xây d ng đo n chể ự ạ ương trình và gi i quy t v n đ n u c n thi t.ả ế ấ ề ế ầ ế
2. M c tiêu c a đ tài : ụ ủ ề
Căn b n hi u đả ể ược Stored Procedure trong SQL Server T ng quan v th t cổ ề ủ ụ
và phân lo i đạ ược các lo i th t c trong SQL.ạ ủ ụ
Đ tài g m 3 chề ồ ương nh sau:ư
Ch ươ ng 1 T ng quan v Stored Procedureổ ề
Ch ươ ng 2 Phân lo i các Stored Procedureạ
Ch ươ ng 3 Ví d minh h a c b nụ ọ ơ ả
Trang 9Ch ươ ng 1 T ng quan v Stored Procedure ổ ề
1.1 Đ nh nghĩa SP ị
SP là gì ?
Stored Procedure : “A precomplied collection of Transact-SQL statements stored under a name and processed as unit SQL Server supplies stored procedures for managing SQL Server anh displaying information about database and users”.
L u ý : SP khác v i Funcions : chúng ư ớ không th tr v giá tr tr c ti p ể ả ề ị ự ế trong Bi u Th c ể ứ
1.3 L i ích c a SP ợ ủ
Tăng t c đ th c hi n: ố ộ ự ệ Đây là l i ích l n nh t khi s d ng Store Procedure.ợ ớ ấ ử ụStore Procedure có kh năng phân tích cú pháp và t i u hóa trong l n th cả ố ư ầ ựthi đ u tiên và m t phiên b n d ch c a chúng trong đó sẽ đầ ộ ả ị ủ ượ ưc l u trong bộ
nh đ s d ng cho l n sau Nghĩa là trong nh ng l n th c hi n sau chúngớ ể ử ụ ầ ữ ầ ự ệkhông c n ph i phân tích cú pháp và t i u l i, mà chúng sẽ s d ng k t quầ ả ố ư ạ ử ụ ế ả
Trang 10được biên d ch trong l n đàu tiên Do đó Store Procedure có kh năng th cị ầ ả ựthi nhanh h n là vi c x lý m t đo n l nh Transact-SQL l n,l p.ơ ệ ử ộ ạ ệ ớ ặ
T c đ truy c p d li u nhanh h n: ố ộ ậ ữ ệ ơ SQL sẽ làm vi c hi u qu h n n u dùngệ ệ ả ơ ếStore Procedure vì ngườ ửi g i ch g i m t câu l nh đ n và SQL Sever ch ki mỉ ử ộ ệ ơ ỉ ểtra m t l n sau đó t o ra m t execute plan và th c thi N u Store Procedureộ ầ ạ ộ ự ế
đượ ọc g i nhi u l n thì execute plan có th s d ng l i nên sẽ làm vi c nhanhề ầ ể ử ụ ạ ệ
h n.ơ
Ch ươ ng trình đ ượ c modul hóa: M t khi Store Procedure độ ượ ạc t o ra nó có
th s d ng l i Đi u này sẽ làm cho vi c b o trì d dang h n do vi c táchể ử ụ ạ ề ệ ả ễ ơ ệ
r i gi a nh ng logic bên trong Store Procedure và c s d li u.ờ ữ ữ ơ ở ữ ệ
Tính nh t quán: ấ L i ích n a c a Store Procedure là thi t đ t đợ ữ ủ ế ặ ược ràng bu cộ
d li u đ đ m b o tính nh t quán Ngữ ệ ể ả ả ấ ườ ử ụi s d ng không th th c hi n tùyể ự ệ
ti n d li u đ làm m t tính đúng đ n c a d li u.ệ ữ ệ ể ấ ắ ủ ữ ệ
Nâng cao kh năng b o m t d li u: ả ả ậ ữ ệ Gi s chúng ta mu n gi i h n vi c truyả ử ố ớ ạ ệ
xu t d li u tr c ti p c a m t user nào đó vào m t s b ng, ta có th vi tấ ữ ệ ự ế ủ ộ ộ ố ả ể ế
m t Store Procedure đ truy xu t d li u và ch cho phép user đó độ ể ấ ữ ệ ỉ ược sử
d ng Store Procedure đã vi t s n mà thôi ch không th thao tác tr c ti nụ ế ẵ ứ ể ự ếtrên các b ng đó Ví d , ta có th t o ra Store Procedure đ ta làm ch và chả ụ ể ạ ể ủ ỉcung c p quy n EXCUTE cho nh ng Store Procedure này, vì th nh ng ngấ ề ữ ế ữ ười
s d ng khác không đử ụ ược phép tr c ti p làm vi c v i d li u Ngoài ra Storeự ế ệ ớ ữ ệProcedure có th để ược mã hóa đ tăng cể ường tính b o m t.ả ậ
Trang 11Ch ươ ng 2 Phân lo i các Stored Procedure ạ
2.1 Các lo i Stored Procedure ạ
SP trong SQL được chia làm 5 lo i nh sauạ ư
2.1.1 System stored procedure
Có trong master database và thường b t đ u b ng “sp_ “, đắ ầ ằ ược truy xu t tấ ừ
b t kì m t database nào, nh m cung c p các thông tin system catalog ho cấ ộ ằ ấ ặ
th c hi n các nhi m v c a administration.ự ệ ệ ụ ủ
2.1.2 Local stored procedure
Hay g i là ọ User-defined Store Procedure ( th t c do ngủ ụ ười dung t o ra).ạ
Đượ ưc l u tr trong các CSDL ngữ ười dùng, nó th c thi các tác v trong CSDLự ụ
ch a nó và đứ ược ngườ ử ụi s d ng t o ra hay t h th ng.ạ ừ ệ ố
2.1.3 Temporary store procedure
Gi ng local Store Procedure nh ng nó ch hi n h u cho đ n khi k t n i t oố ư ỉ ệ ữ ế ế ố ạ
ra nó b đóng Nó đị ược n m trong CSDL TempDB Có 3 lo i tempory Storeằ ạProcedure: local (private), Global, Store Procedure t o tr c ti p trongạ ự ếTemDB Không còn t n t i sau khi SQL Server shutdown.ồ ạ
2.1.4 Extended stored procedure
Là m t th t c độ ủ ụ ượ ạc t o t các ngôn ng l p trình khác ( không ph i SQLừ ữ ậ ảserver) và nó được tri n khai tính năng c a m t th t c trong SQL Server.ể ủ ộ ủ ụCác th t c này có tên b t đ u là xp_.ủ ụ ắ ầ
2.1.5 Remote strored procedure
Là m t th t c độ ủ ụ ượ ọc g i th c thi t m t server t xa.ự ừ ộ ừ
Sau đây chúng ta đi nghiên c u ch y u v 2 lo i c th thứ ủ ế ề ạ ụ ể ường hay s d ngử ụ
là: System Store Procedure ( th t c h th ng ) và ủ ụ ệ ố User-defined Store Procedure ( th t c do ngủ ụ ười dung t o ra ).ạ
Trang 122.2 System Stored Procedure:
“A set of SQL Server-supplied stored procedures that can be used for actions such as retrieving information from the system catalog or performing adminstration task”.
Là nh ng SP ch a trong Master Database và thữ ư ường b t đ u b ng ti p đ uắ ầ ằ ế ầ
sp_Databases Danh sách nh ng Database có th (avaible) trênữ ể
Server (Danh sách này sẽ là khác nhau tùy thu c vàoộquy n c a ngề ủ ườ ử ụi s d ng)
sp_server_info Chi ti t thông tin v Server, ví d nh t p các đ cế ề ụ ư ậ ặ
sp_password Thay đ i password cho login accountổ
Trang 13sp_configure Thay đ i l a ch n c u hình chung c a SQL Sever Khiổ ự ọ ấ ủ
ngườ ử ụi s d ng không l a ch n thì h th ng sẽ hi nự ọ ệ ố ể
th c u hình m c đ nhị ấ ặ ị
sp_help Hi n th thông tin v b t kỳ đ i tể ị ề ấ ố ượng nào trong
Databasesp_helptext Hi n th n i dung (text) c a các đ i tể ị ộ ủ ố ượng
Các tác v Qu n tr (administration tasks) bao g m : Li t kê, Thêm, C pụ ả ị ồ ệ ậ
nh t, Xóa đ i tậ ố ượng C S D Li u.ở ở ữ ệ
Đ th c thi m t SP, ta s d ng l nh EXEC.ể ự ộ ử ụ ệ
Dưới đây là danh sách các th t c h th ng khi m ra trong m t Database vàủ ụ ệ ố ở ộcác th t c này n m trong th m c Programmability.ủ ụ ằ ư ụ
Trang 14Ngoài ra, SQL server còn cung c p m t s Th t c H Th ng m r ng, v iấ ộ ố ủ ụ ệ ố ở ộ ớtên ti n t là xp_ ề ố
Ví d : xp_smdshell ( Li t kê danh sach Th M c và T p tin )ụ ệ ư ụ ậ
2.3 User-Defined Stored Proceudre:
Là các SP do ngườ ử ụi s d ng xây d ng.ự
Khi m t th t c độ ủ ụ ược t o ra, tên th t c đạ ủ ụ ược vi t vào b ng h th ngế ả ệ ốsysobjects, n i dung c a th t c thì độ ủ ủ ụ ược l u trong b ng h th ngư ả ệ ốsyscomments
Th t c khi ch y l n đ u hay đủ ụ ạ ầ ầ ược biên d ch l i sẽ theo 3 bị ạ ước sau:
• Relution – Công c x lý truy v n (query processor) đ c và ki m traụ ử ấ ọ ể
M t s quy t c khi t o SP :ộ ố ắ ạ
M i th t c ch nên hoàn thành 1 nhi m v ỗ ủ ụ ỉ ệ ụ
L nh t o th t c không th ch a các l nh CREATE VIEW, CREATE DEFAULT, ệ ạ ủ ụ ể ứ ệ CREATE RULE hay CREATE TRIGGER.
M t th t c không th t o/ xóa 1 đ i t ộ ủ ụ ể ạ ố ượ ng r i l i tham chi u đ n đ i ồ ạ ế ế ố
t ượ ng đó.
Các th t c có th tham chi u đ n các b ng t m th i ủ ụ ể ế ế ả ạ ờ
Có th tham chi u đ n các đ i t ể ế ế ố ượ ng t các CSDL khác và server t xa ừ ừ
Cho phép các th t c đ quy – th t c có th g i chính nó ủ ụ ệ ủ ụ ể ọ
Nhi u nh t là 2100 Parameters trong Store procedure ề ấ
Các th th c có th đ ủ ụ ể ượ c g i l ng nhau t i đa t i 32 m c ọ ồ ố ớ ứ
Kích c c c đ i c a m t th t c là 128 MB, và còn tùy thu c vào b nh ỡ ự ạ ủ ộ ủ ụ ộ ộ ớ
T o b ng SQL Server Management Studio (SSMS) các bạ ằ ước đ t o nh hìnhể ạ ưsau
Trang 15T o b ng script :ạ ằ
Cú pháp t o nh sau.ạ ư
CREATE { PROC | PROCEDURE} < tên th t c > ủ ụ
[ < Danh sách tham s > ] ố
[VARYING] [= default] [OUTPUT]
[ WITH [ RECOMPLILE ] [, ENCRYPTION ] [, m nh đ EXCECUTE AS> ] ] ệ ề [ FOR REPLICATION ]
Có hai lo i tham s đó là tham s đ u vào và tham s đ u ra Tham s đ uạ ố ố ầ ố ầ ố ầvào thì được chia thành tham s b t bu c (B t bu c ph i truy n gía tr choố ắ ộ ắ ộ ả ề ịtham s này, tham s tùy ch n.Đã đố ố ọ ược gán giá tr m c đ nh, n u khôngị ặ ị ế
Trang 16truy n gái tr trong l i g i th t c tham s sẽ nh n giá tr m c đ nh) Thamề ị ờ ọ ủ ụ ố ậ ị ặ ị
s đ u ra ( S d ng đ l y k t qu tr v t th t c, khai báo b ng t khóaố ầ ử ụ ề ấ ế ả ả ề ừ ủ ụ ằ ừOUTPUT)
Cú pháp :“@<tham s 1> <ki u d li u> [=<m c đ nh>][OUTPUT | OUT] ố ể ữ ệ ặ ị L@<tham s 2> <ki u d li u> [=<m c đ nh>][OUTPUT | OUT]]…” ố ể ữ ệ ặ ị OUTPUT:
n u parameter nào đó đế ược khai báo là Output, thì Parameter đó là 1 “return parameter” Dùng Output Parameter đ tr v thông tin khi g i SP.ể ả ề ọ
Recompile:
SP sẽ được biên d ch l i trong lúc th c thi (run time) Dùng tùy ch nị ạ ự ọ
“recompile” khi ta dùng các giá tr t mị ạ ho c các ặ giá tr không đi n hình ị ể (atypical values) mà không mu n ố ghi đè (override) lên execution plan
(b ng th c thi) ả ự được tr s n trong b nh ữ ẵ ộ ớ
Encryption:
SQL_Server sẽ mã hóa (Encrypt) Danh m c ụ ( trong table syscomments) có
ch a n i dung c a các câu l nh Create Proc Dùng đ ngăn không cho Thứ ộ ủ ệ ể ủ
t c b xu t (published) thành 1 ph n b n sao c a SQL Server.ụ ị ấ ầ ả ủ
For Replication:
m t SP độ ượ ạc t o kèm theo tùy ch n “ For Replication”, sẽ đọ ược dùng nh 1ư
b l c SP ộ ọ và ch th c thi trong quá trình Replicationỉ ự Không s d ng cùng v iử ụ ớtùy chon “ WITH RECOMPILE”
“DROP {PROC | PROCEDURE}<tên th t c>[,…]” ủ ụ
“ALTER {PROC | PROCEDURE}<tên th t c> ủ ụ
[<Danh sách tham s >] ố
[WITH [RECOMPILE] [, ENCRYTION] [, <m nh đ EXECUTE AS>]] ệ ề
AS <Các câu l nh SQL>” ệ
Trang 203.1 Ví d v User-Define SP ụ ề
Trước khi xây d ng các th t c em đã t o m t database có tên là QLNV g m haiự ủ ụ ạ ộ ồ
b ng: nhanvien và sanphamả
B ng nhanvien có danh sách các nhân viên và thông tin c a t ng nhân viên.ả ủ ừ
Ti p theo là b ngế ả sanpham hi n thông tin c a t ng khoa nh mã mã hàng, tên ệ ủ ừ ư
m t hàng, s lặ ố ượng
Trang 21Sau đó xây d ng các th t c v i ví d c th nh sau:ự ủ ụ ớ ụ ụ ể ư
Ví d 6:ụ Hi n thông tin b ng nhanvienệ ả
Trang 22Exec Them_NV ‘NV11’,N’Vi t’,’1990/10/20’, N’Nam’, N’Hà N i’, ‘MH02’ệ ộ
Ví d 8 S a thông tin nhân viênụ ử
where manv=@manv
end
Th c thi th t c Sua_NVự ủ ụ
Trang 23Exec Sua_NV ‘NV11’, N’Hòa’, ’1990/10/21’, N’N ’, N’Hà N i’, ‘MH03’ữ ộ
Ví d 9 Xóa thông tin m t nhân viênụ ộ
Trang 243.1 K t qu liên k t v i ngôn ng l p trình VB.NET ế ả ế ớ ữ ậ
Bước 1: T o ra m t đ i tạ ộ ố ượng SqlConnection đ k t n i t i c s d li u Sể ế ố ớ ơ ở ữ ệ ử
d ng đ i tụ ố ượng đó đ k t n i t i m t c s d li u máy ch ph c v SQL Lể ế ố ớ ộ ơ ở ữ ệ ủ ụ ụ ấytên đ i tố ượng đó là “conn”
SqlConnection conn = new SqlConnection(@"DataSource=CONGVIET;Initial Catalog=CSDLQu nLýSinhViên;IntegratedảSecurity=True");
Bước 2: M l p k t n i và t o ra m t đ i tở ớ ế ố ạ ộ ố ượng SqlCommand đ t tên là cmd vàặkhai báo ki u bi n cho đ i tể ế ố ượng đó :
Conn.Open();
SqlCommand cmd = new SqlCommand("—Tên th t c c n g i ủ ụ ầ ọ ", conn);cmd.CommandType = CommandType.StoredProcedure;
Trang 25Bước 3: Vi t các câu l nh c n thi t, sau đó t o câu l nh th c hi n các câu l nhế ệ ầ ế ạ ệ ự ệ ệ
Trang 26K T LU N Ế Ậ
Qua đ tài trên b n thân đã tích lũy đề ả ược thêm nhi u ki n th c m i v l p trình,ề ế ứ ớ ề ậ
b n thân đã đả ược trang b các ki n th c liên quan v thi t k ph n m m và đãị ế ứ ề ế ế ầ ề
t o đạ ược các th t c SP c b n và g i đủ ụ ơ ả ọ ược trên ngôn ng l p trình VisualBasic,ữ ậ
hi u rõ h n các th t c trong SQL Server.ể ơ ủ ụ
Do kinh nghi m làm bài ch a có nhi u nên bài demo trên cũng ch là nh ng ki nệ ư ề ỉ ữ ế
th c căn b n đ t o đứ ả ể ạ ược các th t c c b n.C n có th i gian h c t p thêmủ ụ ơ ả ầ ờ ọ ậnhi u ki n th c đ t o các th t c ph c t p h n đ càng ti n h n n a khi sề ế ứ ể ạ ủ ụ ứ ạ ơ ể ệ ơ ữ ử
d ng.ụ