SlideShare ist ein Scribd-Unternehmen logo
1 von 5
Downloaden Sie, um offline zu lesen
Bài 1
STORED PROCEDURE
Mục tiêu bài học:
- Khái niệm Stored Procedure
- Ưu điểm của Stored Procedure
- Các loại Stored Procedure
- Cách tạo Stored Procedure
I. Khái niệm Stored Procedure
- Trong những bài học trước đây khi dùng Query Analyzer chúng ta có thể đặt tên và
save các nhóm câu lệnh SQL vào một file dưới dạng script để có thể sử dụng trở lại
sau này. Tuy nhiên thay vì save vào text file ta có thể save vào trong SQL Server
dưới dạng Stored Procedure.
- Stored Procedure là một nhóm câu lệnh Transac-SQL đã được complied (biên dịch)
và chứa trong SQL Server dưới một tên nào đó và được xử lý như một đơn vị (chứ
không phải nhiều câu SQL riêng lẻ).
1. Ưu điểm Stored Procedure
Stored Procedure có một số ưu điểm chính như sau:
- Performance: Khi thực thi một câu lệnh SQL thì SQL Server phải kiểm tra
permission xem user gởi câu lệnh đó có được phép thực hiện câu lệnh hay
không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan và thực thi.
Nếu có nhiều câu lệnh như vậy gởi qua network có thể làm giảm đi tốc độ làm
việc của server. SQL sẽ làm việc hiệu quả hơn nếu dùng stored procedure vì
người gởi chỉ gởi một câu lệnh đơn và SQL Server chỉ kiểm tra một lần sau đó
tạo ra một execute plan và thực thi. Nếu stored procedure được gọi nhiều lần
thì execute plan có thể được sử dụng lại nên sẽ làm việc nhanh hơn. Ngoài ra
cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi save nên
nó không cần kiểm lại khi thực thi.
- Programming Framework: Một khi stored procedure được tạo ra nó có thể
được sử dụng lại. Ðiều này sẽ làm cho việc bảo trì (maintainability) dễ dàng
hơn do việc tách rời giữa business rules (tức là những logic thể hiện bên trong
stored procedure) và database. Ví dụ nếu có một sự thay đổi nào đó về mặt
logic thì ta chỉ việc thay đổi code bên trong stored procedure mà thôi. Những
ứng dụng dùng stored procedure này có thể sẽ không cần phải thay đổi mà
vẫn tương thích với business rule mới. Cũng giống như các ngôn ngữ lập trình
khác stored procedure cho phép ta đưa vào các input parameters (tham số)
và trả về các output parameters đồng thời nó cũng có khả năng gọi các stored
procedure khác.
- Security: 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ố tables, ta có thể viết một stored procedure để
truy xuất dữ liệu và chỉ cho phép user đó được sử dụng stored procedure đã
viết sẵn mà thôi chứ không thể "đụng" đến các tables đó một cách trực tiếp.
Ngoài ra stored procedure có thể được encrypt (mã hóa) để tăng cường tính
bảo mật.
2. Các loại Stored Procedure
Stored Procedure có thể được chia thành 5 nhóm như sau:
- System Stored Procedure: Là những stored procedure chứa trong Master
database và thường bắt đầu bằng tiếp đầu ngữ sp_. Các stored procedure này
thuộc loại built-in và chủ yếu dùng trong việc quản lý database
(administration) và security. Ví dụ bạn có thể kiểm tra tất cả các processes
đang được sử dụng bởi user DomainNameAdministrators bạn có thể dùng
sp_who @loginame='DomainNameAdministrators’. Có hàng trăm system
stored procedure trong SQL Server. Bạn có thể xem chi tiết trong SQL Server
Books Online.
- Local Stored Procedure: Ðây là loại thường dùng nhất. Chúng được chứa
trong user database và thường được viết để thực hiện một công việc nào đó.
Thông thường người ta nói đến stored procedure là nói đến loại này. Local
stored procedure thường được viết bởi DBA hoặc programmer. Chúng ta sẽ
bàn về cách tạo stored prcedure loại này trong phần kế tiếp.
- Temporary Stored Procedure: Là những stored procedure tương tự như
local stored procedure nhưng chỉ tồn tại cho đến khi connection đã tạo ra
chúng bị đóng lại hoặc SQL Server shutdown. Các stored procedure này được
tạo ra trên TempDB của SQL Server nên chúng sẽ bị delete khi connection tạo
ra chúng bị cắt đứt hay khi SQL Server down. Temporary stored procedure
được chia làm 3 loại : local (bắt đầu bằng #), global (bắt đầu bằng ##) và
stored procedure được tạo ra trực tiếp trên TempDB. Loại local chỉ được sử
dụng bởi connection đã tạo ra chúng và bị xóa khi disconnect, còn loại global
có thể được sử dụng bởi bất kỳ connection nào. Permission cho loại global là
dành cho mọi người (public) và không thể thay đổi. Loại stored procedure
được tạo trực tiếp trên TempDB khác với 2 loại trên ở chỗ ta có thể set
permission, chúng tồn tại kể cả sau khi connection tạo ra chúng bị cắt đứt và
chỉ biến mất khi SQL Server shut down.
- Extended Stored Procedure: Ðây là một loại stored procedure sử dụng
một chương trình ngoại vi (external program) vốn được compiled thành một
DLL để mở rộng chức năng hoạt động của SQL Server. Loại này thường bắt
đầu bằng tiếp đầu ngữ xp_ .Ví dụ, xp_sendmail dùng đề gởi mail cho một
người nào đó hay xp_cmdshell dùng để chạy một DOS command... Ví dụ
xp_cmdshell 'dir c:' . Nhiều loại extend stored procedure được xem như
system stored procedure và ngược lại.
- Remote Stored Procedure: Những stored procedure gọi stored procedure ở
server khác.
II. Tạo Stored Procedure
- Tên và những thông tin về Stored Procedure khi được tạo ra sẽ chứa trong
SysObjects table còn phần text của nó chứa trong SysComments table.
- Vì Stored Procedure cũng được xem như một object nên ta cũng có thể dùng
các lệnh như CREATE, ALTER, DROP để tạo mới, thay đổi hay xóa bỏ một
stored procedure.
- Ví dụ về Stored Procedure: Ðể tạo một stored procedure chúng ta có thể dùng
Enterprise Manager click lên trên Stored Procedure -> New Stored
Procedure
Ví dụ 1: Tạo Stored Procedure để cập nhật tên đề tài mới với MSĐT
cũ không đổi. Nếu không tìm thấy trả về 0, ngược lại cập nhật và trả
về 1
CREATE PROC capnhatdetai (@msdt char(6), @tendetaimoi
varchar(30))
AS
If Exists (select msdt from DETAI where msdt=@msdt)
Begin
Update DETAI
Set tendt=@tendetaimoi
Where msdt=@msdt
Return 1 -- da cap nhat
End
Else
Return 0 --khong co de tai nao co MSDT tương ung
Ví dụ 2: Tạo Stored Procedure và đưa vào TENSV nếu không vi phạm
ràng buộc về khoá thì xoá. Ngược lại trả về 0.
CREATE PROC xoasinhvien(@tensv varchar(30))
AS
-- nếu có tên sinh viên cần xoá
If exists (select mssv from SINHVIEN where tensv = @tensv)
Begin
-- nếu có dữ liệu tương ứng trong table THUCHIEN thi khong the
xoa
If exists (select msdt from SINHVIEN t1, THUCHIEN t2 where
t1.mssv=t2.mssv and t1.tensv = @tensv)
Begin
Print ‘khong the xoa du lieu trong table SINHVIEN vi rang buoc khoa
ngoai voi table THUCHIEN’
Return
End
Else
-- Xoa du lieu khoi table SINHVIEN vi khong con vi pham rang
buoc khoa ngoai
Delete from SINHVIEN where tensv = @tensv
Print ‘Da xoa sinh vien co ten: ’+@tensv
End
Else
Begin
Print ‘ khong co sinh vien co ten: ‘+@tensv
Return 0
End

Weitere ähnliche Inhalte

Was ist angesagt?

Lap trinh giao dien nguoi dung voi Java
Lap trinh giao dien nguoi dung voi JavaLap trinh giao dien nguoi dung voi Java
Lap trinh giao dien nguoi dung voi JavaANHMATTROI
 
Android Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingAndroid Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingPhuoc Nguyen
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Minh Tri Lam
 
Báo cáo Jess(Java Expert System Shell)
Báo cáo Jess(Java Expert System Shell)Báo cáo Jess(Java Expert System Shell)
Báo cáo Jess(Java Expert System Shell)Hieu Pham
 
Core java 7
Core java 7Core java 7
Core java 7. .
 
Hệ điều hành
Hệ điều hànhHệ điều hành
Hệ điều hànhĐấy Vợ
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Minh Tri Lam
 
Các bước kết nối csdl my sql với java
Các bước kết nối csdl my sql với javaCác bước kết nối csdl my sql với java
Các bước kết nối csdl my sql với javaBrand Xanh
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTMasterCode.vn
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webMasterCode.vn
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5pisu412
 

Was ist angesagt? (19)

Lap trinh giao dien nguoi dung voi Java
Lap trinh giao dien nguoi dung voi JavaLap trinh giao dien nguoi dung voi Java
Lap trinh giao dien nguoi dung voi Java
 
Web201 slide 2
Web201   slide 2Web201   slide 2
Web201 slide 2
 
Android Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingAndroid Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML Parsing
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
 
Báo cáo Jess(Java Expert System Shell)
Báo cáo Jess(Java Expert System Shell)Báo cáo Jess(Java Expert System Shell)
Báo cáo Jess(Java Expert System Shell)
 
Laptrinh jdbc
Laptrinh jdbcLaptrinh jdbc
Laptrinh jdbc
 
Core java 7
Core java 7Core java 7
Core java 7
 
Hệ điều hành
Hệ điều hànhHệ điều hành
Hệ điều hành
 
Web201 slide 5
Web201   slide 5Web201   slide 5
Web201 slide 5
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
 
Các bước kết nối csdl my sql với java
Các bước kết nối csdl my sql với javaCác bước kết nối csdl my sql với java
Các bước kết nối csdl my sql với java
 
Web201 slide 3
Web201   slide 3Web201   slide 3
Web201 slide 3
 
Web201 slide 4
Web201   slide 4Web201   slide 4
Web201 slide 4
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
 
Tip oracle
Tip oracleTip oracle
Tip oracle
 
Web201 slide 7
Web201   slide 7Web201   slide 7
Web201 slide 7
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
 
Dsd05 02a-xml-rpca
Dsd05 02a-xml-rpcaDsd05 02a-xml-rpca
Dsd05 02a-xml-rpca
 

Ähnlich wie Store procedure

Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02huynhtrong774129
 
1.+tai+lieu+thiet+ke
1.+tai+lieu+thiet+ke1.+tai+lieu+thiet+ke
1.+tai+lieu+thiet+keLinh Hoang
 
Rtos 2: time slice vs preeption (cùng mức ưu tiên vs có chiếm quyền
Rtos 2: time slice vs preeption (cùng mức ưu tiên vs có chiếm quyềnRtos 2: time slice vs preeption (cùng mức ưu tiên vs có chiếm quyền
Rtos 2: time slice vs preeption (cùng mức ưu tiên vs có chiếm quyềnAnhTT8
 
Gt he quan_tri_csdl_ms_sql_server
Gt he quan_tri_csdl_ms_sql_serverGt he quan_tri_csdl_ms_sql_server
Gt he quan_tri_csdl_ms_sql_serveranhanh81
 
1 giới thiệu-cài đặt oracle
1 giới thiệu-cài đặt oracle1 giới thiệu-cài đặt oracle
1 giới thiệu-cài đặt oraclehoangdinhhanh88
 
00 overview of_sql_server
00 overview of_sql_server00 overview of_sql_server
00 overview of_sql_serverthai
 
Seminar clean code
Seminar clean codeSeminar clean code
Seminar clean codeNguyen Thieu
 
Tìm hiểu group policy object và các ví dụ
Tìm hiểu group policy object và các ví dụTìm hiểu group policy object và các ví dụ
Tìm hiểu group policy object và các ví dụlaonap166
 
Sao lưu & phục hồi database SQL Server | zBackup.vn
Sao lưu & phục hồi database SQL Server | zBackup.vnSao lưu & phục hồi database SQL Server | zBackup.vn
Sao lưu & phục hồi database SQL Server | zBackup.vnzBackupVN
 
My sql.storage engine
My sql.storage engineMy sql.storage engine
My sql.storage engineLê Nhân
 
How to write good code
How to write good code How to write good code
How to write good code Minh Hoang
 
Linux Administration.pdf
Linux Administration.pdfLinux Administration.pdf
Linux Administration.pdfssuserca116d
 

Ähnlich wie Store procedure (20)

Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02
 
1.+tai+lieu+thiet+ke
1.+tai+lieu+thiet+ke1.+tai+lieu+thiet+ke
1.+tai+lieu+thiet+ke
 
Process and thread
Process and threadProcess and thread
Process and thread
 
Rtos 2: time slice vs preeption (cùng mức ưu tiên vs có chiếm quyền
Rtos 2: time slice vs preeption (cùng mức ưu tiên vs có chiếm quyềnRtos 2: time slice vs preeption (cùng mức ưu tiên vs có chiếm quyền
Rtos 2: time slice vs preeption (cùng mức ưu tiên vs có chiếm quyền
 
Gt he quan_tri_csdl_ms_sql_server
Gt he quan_tri_csdl_ms_sql_serverGt he quan_tri_csdl_ms_sql_server
Gt he quan_tri_csdl_ms_sql_server
 
1 giới thiệu-cài đặt oracle
1 giới thiệu-cài đặt oracle1 giới thiệu-cài đặt oracle
1 giới thiệu-cài đặt oracle
 
00 overview of_sql_server
00 overview of_sql_server00 overview of_sql_server
00 overview of_sql_server
 
Yii
YiiYii
Yii
 
Bao cao detai
Bao cao detaiBao cao detai
Bao cao detai
 
Jmeter tool
Jmeter toolJmeter tool
Jmeter tool
 
Seminar clean code
Seminar clean codeSeminar clean code
Seminar clean code
 
ôn tập dbms
ôn tập dbmsôn tập dbms
ôn tập dbms
 
Tìm hiểu group policy object và các ví dụ
Tìm hiểu group policy object và các ví dụTìm hiểu group policy object và các ví dụ
Tìm hiểu group policy object và các ví dụ
 
Linux+02
Linux+02Linux+02
Linux+02
 
Sao lưu & phục hồi database SQL Server | zBackup.vn
Sao lưu & phục hồi database SQL Server | zBackup.vnSao lưu & phục hồi database SQL Server | zBackup.vn
Sao lưu & phục hồi database SQL Server | zBackup.vn
 
My sql.storage engine
My sql.storage engineMy sql.storage engine
My sql.storage engine
 
How to write good code
How to write good code How to write good code
How to write good code
 
Mvc 3
Mvc 3Mvc 3
Mvc 3
 
Tshoot module1
Tshoot module1Tshoot module1
Tshoot module1
 
Linux Administration.pdf
Linux Administration.pdfLinux Administration.pdf
Linux Administration.pdf
 

Mehr von jvinhit

Web performance fundamental
Web performance fundamentalWeb performance fundamental
Web performance fundamentaljvinhit
 
CSS Căn bản
CSS Căn bảnCSS Căn bản
CSS Căn bảnjvinhit
 
Using The CSharp Sockets Helper Classes
Using The CSharp Sockets Helper ClassesUsing The CSharp Sockets Helper Classes
Using The CSharp Sockets Helper Classesjvinhit
 
Regular expressions quick reference
Regular expressions quick referenceRegular expressions quick reference
Regular expressions quick referencejvinhit
 
Network Programming in C#
Network Programming in C#Network Programming in C#
Network Programming in C#jvinhit
 
Xử lý ảnh
Xử lý ảnhXử lý ảnh
Xử lý ảnhjvinhit
 
Chươngii
ChươngiiChươngii
Chươngiijvinhit
 
Delegate và event trong C#
Delegate và event trong C#Delegate và event trong C#
Delegate và event trong C#jvinhit
 

Mehr von jvinhit (8)

Web performance fundamental
Web performance fundamentalWeb performance fundamental
Web performance fundamental
 
CSS Căn bản
CSS Căn bảnCSS Căn bản
CSS Căn bản
 
Using The CSharp Sockets Helper Classes
Using The CSharp Sockets Helper ClassesUsing The CSharp Sockets Helper Classes
Using The CSharp Sockets Helper Classes
 
Regular expressions quick reference
Regular expressions quick referenceRegular expressions quick reference
Regular expressions quick reference
 
Network Programming in C#
Network Programming in C#Network Programming in C#
Network Programming in C#
 
Xử lý ảnh
Xử lý ảnhXử lý ảnh
Xử lý ảnh
 
Chươngii
ChươngiiChươngii
Chươngii
 
Delegate và event trong C#
Delegate và event trong C#Delegate và event trong C#
Delegate và event trong C#
 

Store procedure

  • 1. Bài 1 STORED PROCEDURE Mục tiêu bài học: - Khái niệm Stored Procedure - Ưu điểm của Stored Procedure - Các loại Stored Procedure - Cách tạo Stored Procedure I. Khái niệm Stored Procedure - Trong những bài học trước đây khi dùng Query Analyzer chúng ta có thể đặt tên và save các nhóm câu lệnh SQL vào một file dưới dạng script để có thể sử dụng trở lại sau này. Tuy nhiên thay vì save vào text file ta có thể save vào trong SQL Server dưới dạng Stored Procedure. - Stored Procedure là một nhóm câu lệnh Transac-SQL đã được complied (biên dịch) và chứa trong SQL Server dưới một tên nào đó và được xử lý như một đơn vị (chứ không phải nhiều câu SQL riêng lẻ). 1. Ưu điểm Stored Procedure Stored Procedure có một số ưu điểm chính như sau: - Performance: Khi thực thi một câu lệnh SQL thì SQL Server phải kiểm tra permission xem user gởi câu lệnh đó có được phép thực hiện câu lệnh hay không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan và thực thi. Nếu có nhiều câu lệnh như vậy gởi qua network có thể làm giảm đi tốc độ làm việc của server. SQL sẽ làm việc hiệu quả hơn nếu dùng stored procedure vì người gởi chỉ gởi một câu lệnh đơn và SQL Server chỉ kiểm tra một lần sau đó tạo ra một execute plan và thực thi. Nếu stored procedure được gọi nhiều lần thì execute plan có thể được sử dụng lại nên sẽ làm việc nhanh hơn. Ngoài ra cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi save nên nó không cần kiểm lại khi thực thi. - Programming Framework: Một khi stored procedure được tạo ra nó có thể được sử dụng lại. Ðiều này sẽ làm cho việc bảo trì (maintainability) dễ dàng hơn do việc tách rời giữa business rules (tức là những logic thể hiện bên trong stored procedure) và database. Ví dụ nếu có một sự thay đổi nào đó về mặt logic thì ta chỉ việc thay đổi code bên trong stored procedure mà thôi. Những
  • 2. ứng dụng dùng stored procedure này có thể sẽ không cần phải thay đổi mà vẫn tương thích với business rule mới. Cũng giống như các ngôn ngữ lập trình khác stored procedure cho phép ta đưa vào các input parameters (tham số) và trả về các output parameters đồng thời nó cũng có khả năng gọi các stored procedure khác. - Security: 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ố tables, ta có thể viết một stored procedure để truy xuất dữ liệu và chỉ cho phép user đó được sử dụng stored procedure đã viết sẵn mà thôi chứ không thể "đụng" đến các tables đó một cách trực tiếp. Ngoài ra stored procedure có thể được encrypt (mã hóa) để tăng cường tính bảo mật. 2. Các loại Stored Procedure Stored Procedure có thể được chia thành 5 nhóm như sau: - System Stored Procedure: Là những stored procedure chứa trong Master database và thường bắt đầu bằng tiếp đầu ngữ sp_. Các stored procedure này thuộc loại built-in và chủ yếu dùng trong việc quản lý database (administration) và security. Ví dụ bạn có thể kiểm tra tất cả các processes đang được sử dụng bởi user DomainNameAdministrators bạn có thể dùng sp_who @loginame='DomainNameAdministrators’. Có hàng trăm system stored procedure trong SQL Server. Bạn có thể xem chi tiết trong SQL Server Books Online. - Local Stored Procedure: Ðây là loại thường dùng nhất. Chúng được chứa trong user database và thường được viết để thực hiện một công việc nào đó. Thông thường người ta nói đến stored procedure là nói đến loại này. Local stored procedure thường được viết bởi DBA hoặc programmer. Chúng ta sẽ bàn về cách tạo stored prcedure loại này trong phần kế tiếp. - Temporary Stored Procedure: Là những stored procedure tương tự như local stored procedure nhưng chỉ tồn tại cho đến khi connection đã tạo ra chúng bị đóng lại hoặc SQL Server shutdown. Các stored procedure này được tạo ra trên TempDB của SQL Server nên chúng sẽ bị delete khi connection tạo ra chúng bị cắt đứt hay khi SQL Server down. Temporary stored procedure được chia làm 3 loại : local (bắt đầu bằng #), global (bắt đầu bằng ##) và stored procedure được tạo ra trực tiếp trên TempDB. Loại local chỉ được sử dụng bởi connection đã tạo ra chúng và bị xóa khi disconnect, còn loại global
  • 3. có thể được sử dụng bởi bất kỳ connection nào. Permission cho loại global là dành cho mọi người (public) và không thể thay đổi. Loại stored procedure được tạo trực tiếp trên TempDB khác với 2 loại trên ở chỗ ta có thể set permission, chúng tồn tại kể cả sau khi connection tạo ra chúng bị cắt đứt và chỉ biến mất khi SQL Server shut down. - Extended Stored Procedure: Ðây là một loại stored procedure sử dụng một chương trình ngoại vi (external program) vốn được compiled thành một DLL để mở rộng chức năng hoạt động của SQL Server. Loại này thường bắt đầu bằng tiếp đầu ngữ xp_ .Ví dụ, xp_sendmail dùng đề gởi mail cho một người nào đó hay xp_cmdshell dùng để chạy một DOS command... Ví dụ xp_cmdshell 'dir c:' . Nhiều loại extend stored procedure được xem như system stored procedure và ngược lại. - Remote Stored Procedure: Những stored procedure gọi stored procedure ở server khác. II. Tạo Stored Procedure - Tên và những thông tin về Stored Procedure khi được tạo ra sẽ chứa trong SysObjects table còn phần text của nó chứa trong SysComments table. - Vì Stored Procedure cũng được xem như một object nên ta cũng có thể dùng các lệnh như CREATE, ALTER, DROP để tạo mới, thay đổi hay xóa bỏ một stored procedure. - Ví dụ về Stored Procedure: Ðể tạo một stored procedure chúng ta có thể dùng Enterprise Manager click lên trên Stored Procedure -> New Stored Procedure Ví dụ 1: Tạo Stored Procedure để cập nhật tên đề tài mới với MSĐT cũ không đổi. Nếu không tìm thấy trả về 0, ngược lại cập nhật và trả về 1
  • 4. CREATE PROC capnhatdetai (@msdt char(6), @tendetaimoi varchar(30)) AS If Exists (select msdt from DETAI where msdt=@msdt) Begin Update DETAI Set tendt=@tendetaimoi Where msdt=@msdt Return 1 -- da cap nhat End Else Return 0 --khong co de tai nao co MSDT tương ung Ví dụ 2: Tạo Stored Procedure và đưa vào TENSV nếu không vi phạm ràng buộc về khoá thì xoá. Ngược lại trả về 0. CREATE PROC xoasinhvien(@tensv varchar(30)) AS -- nếu có tên sinh viên cần xoá If exists (select mssv from SINHVIEN where tensv = @tensv) Begin -- nếu có dữ liệu tương ứng trong table THUCHIEN thi khong the xoa If exists (select msdt from SINHVIEN t1, THUCHIEN t2 where t1.mssv=t2.mssv and t1.tensv = @tensv) Begin Print ‘khong the xoa du lieu trong table SINHVIEN vi rang buoc khoa ngoai voi table THUCHIEN’ Return End Else -- Xoa du lieu khoi table SINHVIEN vi khong con vi pham rang
  • 5. buoc khoa ngoai Delete from SINHVIEN where tensv = @tensv Print ‘Da xoa sinh vien co ten: ’+@tensv End Else Begin Print ‘ khong co sinh vien co ten: ‘+@tensv Return 0 End