MICROSOFT STUDENT PARTNER 20094 TÀI LIỆU THAM KHẢO : Giáo Trình Hệ Quản Trị Cơ Sở Dữ Liệu SQL Server, Trường Đại Học Công Nghiệp Tp.Hồ Chí Minh, 2008.. MICROSOFT STUDENT PARTNER 20098
Trang 1MICROSOFT STUDENT PARTNER 2009
ĐỀ TÀI :
Trang 2MICROSOFT STUDENT PARTNER 2009
Trang 3NỘI DUNG :
Phần 1 : Tổng quan về Stored Procedure (Khái Niệm, Phân Loại Stored Procedure)
Phần 2 : Các Ví dụ Minh họa
Trang 4MICROSOFT STUDENT PARTNER 2009
4
TÀI LIỆU THAM KHẢO :
Giáo Trình Hệ Quản Trị Cơ Sở Dữ Liệu SQL Server, Trường Đại Học Công Nghiệp Tp.Hồ Chí Minh,
2008
SQL Server Book Online
SQL Server 2005 : Lập Trình Nâng Cao – Phạm Hữu Khang, Đoàn Thiện Ngân, Nhà Xuất Bản Lao Động
Xã Hội, năm 2008
Lập trình Windows Nâng Cao (C#) : Xây dựng Ứng Dụng với ADO.NET, Trường Đại Học Công Nghiệp Tp.Hồ Chí Minh, 2008
Trang 5PHẦN 1 : TỔNG QUAN VỀ
STORED PROCEDURE
Trang 6MICROSOFT STUDENT PARTNER 2009
6
1.1 Giới thiệu Stored Procedure (SP) :
Store Procedure (SP) : “A precompiled collection of Transact-SQL statements stored under a name and processed as a unit SQL Server supplies stored procedures for managing SQL Server and displaying information about databases and users”.
Lý do sử dụng : Khi duyệt hay xử lý Dữ Liệu trong
Cơ Sở Dữ Liệu SQL Server, ngôn ngữ SQL (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
Trang 71.1 Giới thiệu Stored Procedure (SP) :
SP chứa các lệnh T-SQL để thực thi 1 nhiệm vụ (task) SP được thiết kế, mã hóa, kiểm tra và biên dịch thành mã thực thi (single execution plan) đặt ngay trên server Các ứng dụng (application) khi cần thực thi nhiệm vụ, chỉ cần gọi SP Server sẽ chạy execution plan và trả kết quả về lại client
Thực thi nhanh hơn
Giảm lưu lượng mạng (network traffic)
Trang 8MICROSOFT STUDENT PARTNER 2009
8
1.1 Giới thiệu Stored Procedure :
SP trong SQL Server tương tự như thủ tục trong các Ngôn Ngữ Lập trình khác :
Nhận các tham số từ bên ngoài và trả về nhiều giá trị
Bao gồm một số phát biểu thực hiện các tác vụ trong
Cơ Sở Dữ Liệu, và có thể gọi các thủ tục khác
Trả về trạng thái Thành Công hay Thất Bại của quá trình gọi Thủ tục hay bó (Batch) trong Cơ sở Dữ
Liệu
Lưu ý : SP khác với Functions : chúng không thể trả
về giá trị trực tiếp trong Biểu Thức
Trang 91.2 Lợi ích khi dùng Stored Procedures :
Lập trình theo từng Module
Tạo 1 lần và có thể gọi bất kỳ lúc nào từ các Ứng
Dụng
Thực thi nhanh hơn (do nó đã được biên dịch trước)
Giảm bớt việc nghẽn đường truyền trên mạng, do SP được xử lý trong Cơ Sở Dữ Liệu và trả về kết quả
Sau đó từ Ứng Dụng, bạn chỉ cần đọc kết quả này và
trình bày cho Người Sử Dụng.
Trang 10MICROSOFT STUDENT PARTNER 2009
10
1.3 Phân loại Stored Procedure :
Chủ yếu có 2 loại : Thủ tục Hệ Thống (System Stored Procedure) và Thủ tục do Người Dùng tạo ra (User – Defined Stored Procedure).
Trang 111.3.1 System Stored Procedures :
“A set of SQL Server-supplied stored procedures that can be used for actions such as retrieving information from the system catalog or performing administration tasks”
Ghi chú :
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
Trang 12MICROSOFT STUDENT PARTNER 2009
Trang 131.3.1 System Stored Procedures :
Kết quả :
Trang 14MICROSOFT STUDENT PARTNER 2009
14
1.3.1 System Stored Procedures :
Được chia thành các Nhóm sau : (xem thêm “SQL Server Book Online”)
SP dùng để liệt kê Thông tin (liệt kê danh sách database, liệt kê danh sách Linked Servers, …)
SP dùng để trình bày Thông Tin (trình bày thông tin Table, liệt kê thông Tin của SP, liệt kê danh sách đối tượng Trigger, …)
SP dùng để Thêm, Xóa, Cập Nhật Thông Tin (thay đổi Chủ Nhân của Database, thay đổi Default Database, đổi Mật Khẩu, …)
Trang 151.3.1 System Stored Procedures :
Ngoà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_cmdshell, xp_sendmail
Trang 16MICROSOFT STUDENT PARTNER 2009
16
1.3.1 System Stored Procedures :
Minh họa (xp_cmdshell) : // liệt kê danh sách Thư Mục và Tập Tin
Trang 171.3.2 User – Defined Stored Procedures :
Là các SP do người sử dụng tự xây dựng
Khi 1 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:
Resolution
Optimization
Compilation
Trang 18MICROSOFT STUDENT PARTNER 2009
Trang 191.3.2 User – Defined Stored Procedures :
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 (CREATE PROCEDURE) không thể chứa các lệnh CREATE VIEW, CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, hay
CREATE TRIGGER
Các lệnh CREATE TABLE và CREATE INDEX có thể được tạo và tham chiếu ngay trong cùng 1 thủ tục
Trang 20MICROSOFT STUDENT PARTNER 2009
20
1.3.2 User – Defined Stored Procedures :
Một số Quy tắc khi tạo SP :
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ác bảng tạm (Temporary table) có thể được tạo ra bên trong thủ tục và được tự động xoá khi thủ tục kết thúc
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 (recursive) – thủ tục có thể gọi chính nó
Trang 211.3.2 User – Defined Stored Procedures :
Một số Quy tắc khi tạo SP :
Nhiều nhất là 2100 Parameters trong 1 SP
Các thủ tụ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 1 thủ tục là 128 MB, và còn tùy thuộc vào bộ nhớ
Trang 22MICROSOFT STUDENT PARTNER 2009
Trang 231.3.2 User – Defined Stored Procedures :
Giải thích :
Procedure_name : tên Procedure cần tạo.
Lưu ý : procedure toàn cục – global procedure
(##procedure_name), procedure cục bộ - local
procedure (#procedure_name)
;number : là 1 tùy chọn (optional) kiểu Số
Nguyên (integer), để nhóm các SP có cùng tên
lại với nhau (ví dụ : orderproc;1, orderproc;2),
và sẽ cùng bị xóa bằng lệnh DROP PROC (ví dụ
Trang 24MICROSOFT STUDENT PARTNER 2009
24
1.3.2 User – Defined Stored Procedures :
Giải thích (tt) :
@parameter data_type : là Tham Số của SP, có kiểu
Dữ Liệu nào đó (bao gồm cả kiểu text, ntext, image,
trừ kiểu cursor chỉ được dùng làm Tham số output),
Trang 251.3.2 User – Defined Stored Procedures :
{ RECOMPILE | ENCRYPTION | RECOMPILE ,
ENCRYPTION } :
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ớ
Trang 26MICROSOFT STUDENT PARTNER 2009
26
1.3.2 User – Defined Stored Procedures :
ENCRYPTION : SQL Server sẽ mã hóa (Encrypt) Danh Mục (trong table syscomments ) có chứa nội dung của 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 : 1 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 chọn “WITH RECOMPILE”
AS sql_statement [ n ] : các lệnh T-SQL kèm theo trong SP (Xem Ví dụ Minh Họa trong “Phần 2”)
Trang 271.3.2 User – Defined Stored Procedures :
Trang 28MICROSOFT STUDENT PARTNER 2009
28
1.3.2 User – Defined Stored Procedures :
Đổi tên Thủ tục : (dùng sp_rename)
Cú pháp :
sp_rename ‘old_proc_name’, ‘new_proc_name’
Xóa Thủ Tục : (dùng Drop Proc)
Cú pháp : Drop Proc proc_name
Ví dụ minh họa : (Xem “Phần 2”)
Trang 29PHẦN 2 : CÁC VÍ DỤ MINH HỌA
Trang 30MICROSOFT STUDENT PARTNER 2009
30
2.1 Tạo 1 User – Defined Stored Procedure
(có Tham số truyền vào) :
Các Biến Cục Bộ (Local variables) nhận giá trị từ bên ngoài truyền vào
Trang 312.1 Tạo 1 User – Defined Stored Procedure
(có Tham số truyền vào)
Kết quả :
Trang 32MICROSOFT STUDENT PARTNER 2009
Trang 332.2 Tạo 1 User – Defined Stored Procedure
(có sử dụng Output Parameter)
Kết quả:
Trang 34MICROSOFT STUDENT PARTNER 2009
34
2.3 SP với tùy chọn “WITH RECOMPILE”
Trang 352.3 SP với tùy chọn “WITH RECOMPILE”
Kết quả :
Trang 36MICROSOFT STUDENT PARTNER 2009
36
2.4 SP với tùy chọn “WITH ENCRYPTION”
Trang 372.4 SP với tùy chọn “WITH ENCRYPTION”
Kết quả :
SP đã bị Mã Hóa (Encrypt), Không xem được Nội dung
Không thấy gì, Phần Text đã bị Mã Hóa !
Trang 38MICROSOFT STUDENT PARTNER 2009
38
2.5 Tự tạo 1 “System Stored Procedure”
Trang 392.5 Tự tạo 1 “System Stored Procedure”
Kết quả :
Trang 40MICROSOFT STUDENT
PARTNER 2009
40THANK YOU !