Tải bản đầy đủ (.ppt) (40 trang)

STORED PROCEDURE TRONG SQL SERVER (PHẦN CƠ BẢN) pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.28 MB, 40 trang )

MICROSOFT STUDENT PARTNER 2009
MICROSOFT STUDENT PARTNER 2009
ĐỀ TÀI :
ĐỀ TÀI :
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
2
2
MỤC TIÊU :
MỤC TIÊU :

Căn bản Hiểu được Stored Procedure trong SQL
Căn bản Hiểu được Stored Procedure trong SQL
Server.
Server.

Tạo được 1 vài Stored Procedures (ở mức cơ bản).
Tạo được 1 vài Stored Procedures (ở mức cơ bản).
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
3
3
NỘI DUNG :
NỘI DUNG :

Phần 1 : Tổng quan về Stored Procedure (Khái Niệm,
Phần 1 : Tổng quan về Stored Procedure (Khái Niệm,


Phân Loại Stored Procedure).
Phân Loại Stored Procedure).

Phần 2 : Các Ví dụ Minh họa.
Phần 2 : Các Ví dụ Minh họa.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
4
4
TÀI LIỆU THAM KHẢO :
TÀI LIỆU THAM KHẢO :

Giáo Trình Hệ Quản Trị Cơ Sở Dữ Liệu SQL Server,
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,
Trường Đại Học Công Nghiệp Tp.Hồ Chí Minh,
2008.
2008.

SQL Server Book Online.
SQL Server Book Online.

SQL Server 2005 : Lập Trình Nâng Cao – Phạm Hữu
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
Khang, Đoàn Thiện Ngân, Nhà Xuất Bản Lao Động
Xã Hội, năm 2008.
Xã Hội, năm 2008.


Lập trình Windows Nâng Cao (C#) : Xây dựng Ứng
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
Dụng với ADO.NET, Trường Đại Học Công Nghiệp
Tp.Hồ Chí Minh, 2008.
Tp.Hồ Chí Minh, 2008.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
5
5
PHẦN 1 :
PHẦN 1 :
TỔNG QUAN VỀ
TỔNG QUAN VỀ
STORED PROCEDURE
STORED PROCEDURE
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
6
6
1.1 Giới thiệu Stored Procedure (SP) :
1.1 Giới thiệu Stored Procedure (SP) :

Store Procedure (SP) :
Store Procedure (SP) :

“A precompiled collection of
“A precompiled collection of
Transact-SQL statements stored under a name and
Transact-SQL statements stored under a name and
processed as a unit. SQL Server supplies stored
processed as a unit. SQL Server supplies stored
procedures for managing SQL Server and displaying
procedures for managing SQL Server and displaying
information about databases and users”.
information about databases and users”.

Lý do sử dụng : Khi duyệt hay xử lý Dữ Liệu trong
Lý do sử dụng : Khi duyệt hay xử lý Dữ Liệu trong
Cơ Sở Dữ Liệu SQL Server,
Cơ Sở Dữ Liệu SQL Server,
ngôn ngữ SQL
ngôn ngữ SQL
(Structured Query Language)
(Structured Query Language)
là ngôn ngữ thực thi
là ngôn ngữ thực thi
hiệu quả nhất
hiệu quả nhất
.
.
Do đó, khi tính toán với lượng lớn Dữ
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
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 đề

để xây dựng đoạn Chương trình và giải quyết vấn đề
nếu cần thiết.
nếu cần thiết.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
7
7
1.1 Giới thiệu Stored Procedure (SP) :
1.1 Giới thiệu Stored Procedure (SP) :

SP chứa các lệnh T-SQL để thực thi 1 nhiệm vụ
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
(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
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
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
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.
execution plan và trả kết quả về lại client.





Thực thi nhanh hơn

Thực thi nhanh hơn



Giảm lưu lượng mạng (network traffic)
Giảm lưu lượng mạng (network traffic)
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
8
8
1.1 Giới thiệu Stored Procedure :
1.1 Giới thiệu Stored Procedure :

SP trong SQL Server tương tự như thủ tục trong các
SP trong SQL Server tương tự như thủ tục trong các
Ngôn Ngữ Lập trình khá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ị.
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
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.
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ả 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ữ
trình gọi Thủ tục hay bó (Batch) trong Cơ sở Dữ
Liệu.
Liệu.

Lưu ý : SP khác với Functions : chúng
Lưu ý : SP khác với Functions : chúng
không thể trả
không thể trả
về giá trị trực tiếp trong Biểu Thức
về giá trị trực tiếp trong Biểu Thức
.
.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
9
9
1.2 Lợi ích khi dùng Stored Procedures :
1.2 Lợi ích khi dùng Stored Procedures :

Lập trình theo từng Module.
Lập trình theo từng Module.

Tạo 1 lần và có thể
Tạo 1 lần và có thể
gọi bất kỳ lúc nào
gọi bất kỳ lúc nào
từ các Ứng

từ các Ứng
Dụng.
Dụng.

Thực thi nhanh hơn (do nó đã được biên dịch trước).
Thực thi nhanh hơn (do nó đã được biên dịch trước).

Giảm bớt việc
Giảm bớt việc
nghẽn đường truyền trên mạng
nghẽn đường truyền trên mạng
, do SP
, do SP
được xử lý trong Cơ Sở Dữ Liệu và trả về kết quả.
đượ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
Sau đó từ Ứng Dụng, bạn chỉ cần
đọc kết quả này và
đọc kết quả này và
trình bày cho Người Sử Dụng.
trình bày cho Người Sử Dụng.

Sử dụng Cơ Chế
Sử dụng Cơ Chế
Bảo Mật
Bảo Mật
, người sử dụng cần thiết
, người sử dụng cần thiết
được
được

Cấp Quyền Thực Thi SP
Cấp Quyền Thực Thi SP
.
.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
10
10
1.3 Phân loại Stored Procedure :
1.3 Phân loại Stored Procedure :

Chủ yếu có 2 loại :
Chủ yếu có 2 loại :
Thủ tục Hệ Thống (System
Thủ tục Hệ Thống (System
Stored Procedure)
Stored Procedure)


Thủ tục do Người Dùng tạo ra
Thủ tục do Người Dùng tạo ra
(User – Defined Stored Procedure).
(User – Defined Stored Procedure).
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
11

11
1.3.1 System Stored Procedures :
1.3.1 System Stored Procedures :



A set of SQL Server-supplied stored procedures that
A set of SQL Server-supplied stored procedures that
can be used for actions such as retrieving
can be used for actions such as retrieving
information from the system catalog or performing
information from the system catalog or performing
administration tasks”
administration tasks”
.
.

Ghi chú :
Ghi chú :
Các tác vụ Quản Trị (administration tasks) bao gồm :
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ệt kê, Thêm, Cập Nhật, Xóa đối tượng Cơ Sở Dữ
Liệu.
Liệu.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
12

12
1.3.1 System Stored Procedures :
1.3.1 System Stored Procedures :

Kí hiệu :
Kí hiệu :
sp_ , xp_
sp_ , xp_

Để thực thi 1 SP, ta sử dụng lệnh
Để thực thi 1 SP, ta sử dụng lệnh
EXEC
EXEC
.
.

Ví dụ :
Ví dụ :
EXEC sp_databases
EXEC sp_databases


//Thực thi thủ tục liệt kê danh sách các Database có
//Thực thi thủ tục liệt kê danh sách các Database có
trong SQL Server
trong SQL Server
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009

13
13
1.3.1 System Stored Procedures :
1.3.1 System Stored Procedures :

Kết quả :
Kết quả :
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
14
14
1.3.1 System Stored Procedures :
1.3.1 System Stored Procedures :

Được chia thành các Nhóm sau : (xem thêm “SQL
Được chia thành các Nhóm sau : (xem thêm “SQL
Server Book Online”)
Server Book Online”)

SP dùng để liệt kê Thông tin (liệt kê danh sách
SP dùng để liệt kê Thông tin (liệt kê danh sách
database, liệt kê danh sách Linked Servers, …)
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
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
Table, liệt kê thông Tin của SP, liệt kê danh sách đối

tượng Trigger, …)
tượng Trigger, …)

SP dùng để Thêm, Xóa, Cập Nhật Thông Tin (thay
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
đổi Chủ Nhân của Database, thay đổi Default
Database, đổi Mật Khẩu, …)
Database, đổi Mật Khẩu, …)
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
15
15
1.3.1 System Stored Procedures :
1.3.1 System Stored Procedures :

Ngoài ra, SQL Server còn cung cấp một số
Ngoài ra, SQL Server còn cung cấp một số
Thủ tục
Thủ tục
Hệ Thống mở rộng, với tên tiền tố là xp_
Hệ Thống mở rộng, với tên tiền tố là xp_

Ví dụ : xp_cmdshell, xp_sendmail.
Ví dụ : xp_cmdshell, xp_sendmail.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009

PARTNER 2009
16
16
1.3.1 System Stored Procedures :
1.3.1 System Stored Procedures :

Minh họa (xp_cmdshell) :
Minh họa (xp_cmdshell) :
// liệt kê danh sách Thư
// liệt kê danh sách Thư
Mục và Tập Tin
Mục và Tập Tin
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
17
17
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :

Là các SP do người sử dụng tự xây dựng.
Là các SP do người sử dụng tự xây dựng.

Khi 1 thủ tục được tạo ra,
Khi 1 thủ tục được tạo ra,
tên thủ tục
tên thủ tục
được viết vào
được viết vào

bảng hệ thống
bảng hệ thống
sysobjects,
sysobjects,
nội dung
nội dung
của thủ tục thì
của thủ tục thì
được lưu trong bảng hệ thống
được lưu trong bảng hệ thống
syscomments
syscomments
.
.

Thủ tục khi
Thủ tục khi
chạy lần đầu
chạy lần đầu
hay được
hay được
biên dịch lại
biên dịch lại
sẽ
sẽ
theo 3 bước sau:
theo 3 bước sau:




Resolution
Resolution



Optimization
Optimization



Compilation
Compilation
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
18
18
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :

Thực thi lần đầu :
Thực thi lần đầu :

Resolution
Resolution





C
C
ông cụ xử lý truy vấn (query
ông cụ xử lý truy vấn (query
processor) đọc và kiểm tra lỗi chính tả của thủ tục
processor) đọc và kiểm tra lỗi chính tả của thủ tục
.
.



Optimization
Optimization




C
C
ông cụ tối ưu hoá truy vấn phát
ông cụ tối ưu hoá truy vấn phát
triển một execution plan cho các lệnh trong thủ tục.
triển một execution plan cho các lệnh trong thủ tục.

Compilation
Compilation


— trong qu
— trong qu

á trình
á trình
bi
bi
ên dịch,
ên dịch,
th
th
ủ tục
ủ tục
được phân tích và execution plan được tạo ra.
được phân tích và execution plan được tạo ra.
Execution plan được nạp vào bộ nhớ (
Execution plan được nạp vào bộ nhớ (
procedure
procedure
cache)
cache)
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
19
19
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :

Một số quy tắc khi tạo SP :
Một số quy tắc khi tạo SP :
M

M
ỗi thủ tục chỉ nên hoàn thành 1 nhiệm vụ
ỗi thủ tục chỉ nên hoàn thành 1 nhiệm vụ
.
.


L
L
ệnh tạo thủ tục (
ệnh tạo thủ tục (
CREATE PROCEDURE) kh
CREATE PROCEDURE) kh
ông thể
ông thể
chứa các lệnh
chứa các lệnh
CREATE VIEW, CREATE DEFAULT,
CREATE VIEW, CREATE DEFAULT,
CREATE PROCEDURE, CREATE RULE, hay
CREATE PROCEDURE, CREATE RULE, hay
CREATE TRIGGER.
CREATE TRIGGER.


C
C
ác lệnh
ác lệnh
CREATE TABLE v

CREATE TABLE v
à
à
CREATE INDEX c
CREATE INDEX c
ó
ó
thể được tạo và tham chiếu ngay trong cùng 1 thủ tục
thể được tạo và tham chiếu ngay trong cùng 1 thủ tục
.
.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
20
20
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :

Một số Quy tắc khi tạo SP
Một số Quy tắc khi tạo SP
:
:
M
M
ột thủ tục không thể tạo/xóa 1 đối tượng rồi lại
ộ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 đó.
tham chiếu đến đối tượng đó.

C
C
ác thủ tục có thể tham chiếu đến các bảng tạm thời
ác thủ tục có thể tham chiếu đến các bảng tạm thời
.
.
C
C
ác bảng tạm (
ác bảng tạm (
Temporary table) c
Temporary table) c
ó thể được tạo ra
ó thể được tạo ra
bên trong thủ tục và được tự động xoá khi thủ tục kết
bên trong thủ tục và được tự động xoá khi thủ tục kết
thúc
thúc
.
.
C
C
ó thể tham chiếu đến các đối tượng từ các CSDL
ó thể tham chiếu đến các đối tượng từ các CSDL
khác và server từ xa
khác và server từ xa
.
.
Cho ph
Cho ph

ép các thủ tục đệ quy (r
ép các thủ tục đệ quy (r
ecursive) – th
ecursive) – th
ủ tục có
ủ tục có
thể gọi chính nó.
thể gọi chính nó.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
21
21
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :

Một số Quy tắc khi tạo SP
Một số Quy tắc khi tạo SP
:
:
Nhiều nhất là 2100 Parameters trong 1 SP.
Nhiều nhất là 2100 Parameters trong 1 SP.
C
C
ác thủ tục có thể được gọi lồng nhau tối đa tới 32
ác thủ tục có thể được gọi lồng nhau tối đa tới 32
mức
mức
.

.


K
K
ích cỡ cực đại của 1 thủ tục là 128 MB, và còn tùy
í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ớ
thuộc vào bộ nhớ
.
.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
22
22
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :

Tạo 1 SP :
Tạo 1 SP :

Cú pháp :
Cú pháp :

CREATE PROC [ EDURE ]
CREATE PROC [ EDURE ]
procedure_name
procedure_name

[
[
;
;
number
number
]
]
[ { @
[ { @
parameter data_type
parameter data_type
}
}




[ VARYING ] [
[ VARYING ] [
=
=
default
default
] [ OUTPUT ]
] [ OUTPUT ]


] [
] [

,
,


n
n
]
]
[ WITH
[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE
{ RECOMPILE | ENCRYPTION | RECOMPILE
,
,


ENCRYPTION } ]
ENCRYPTION } ]
[ FOR REPLICATION ]
[ FOR REPLICATION ]
AS
AS
sql_statement
sql_statement
[
[
n
n
]
]

MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
23
23
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :



Giải thích
Giải thích
:
:

Procedure_name
Procedure_name
: tên Procedure cần tạo.
: tên Procedure cần tạo.

Lưu ý :
Lưu ý :
procedure toàn cục
procedure toàn cục
– global procedure
– global procedure
(##procedure_name),
(##procedure_name),



procedure cục bộ
procedure cục bộ
- local
- local
procedure
procedure
(#procedure_name).
(#procedure_name).

;number
;number
: là 1 tùy chọn (optional) kiểu Số
: là 1 tùy chọn (optional) kiểu Số
Nguyên (integer), để
Nguyên (integer), để
nhóm
nhóm
các SP có cùng tên
các SP có cùng tên
lại với nhau (ví dụ :
lại với nhau (ví dụ :
orderproc;1
orderproc;1
,
,
orderproc;2
orderproc;2
)
)

,
,


và sẽ cùng bị xóa bằng lệnh DROP PROC (ví dụ
và sẽ cùng bị xóa bằng lệnh DROP PROC (ví dụ
Drop Proc
Drop Proc
orderproc
orderproc
).
).


MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
24
24
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :



Giải thích (tt)
Giải thích (tt)
:
:


@parameter data_type :
@parameter data_type :
là Tham Số của SP, có kiểu
là Tham Số của SP, có kiểu
Dữ Liệu nào đó (bao gồm cả kiểu
Dữ Liệu nào đó (bao gồm cả kiểu
text, ntext, image
text, ntext, image
,
,
trừ kiểu
trừ kiểu
cursor
cursor
chỉ được dùng làm Tham số output
chỉ được dùng làm Tham số output
),
),
ví dụ :
ví dụ :
@masv char
@masv char
.
.

OUTPUT :
OUTPUT :
nếu parameter nào được khai báo là
nếu parameter nào được khai báo là
Output

Output
, thì parameter đó là 1
, thì parameter đó là 1
“return parameter”
“return parameter”
.
.
Dùng
Dùng
Output Parameter
Output Parameter
để
để
trả về thông tin khi gọi
trả về thông tin khi gọi
SP
SP
.
.
MICROSOFT STUDENT
MICROSOFT STUDENT
PARTNER 2009
PARTNER 2009
25
25
1.3.2 User – Defined Stored Procedures :
1.3.2 User – Defined Stored Procedures :

{ RECOMPILE | ENCRYPTION | RECOMPILE
{ RECOMPILE | ENCRYPTION | RECOMPILE

,
,


ENCRYPTION } :
ENCRYPTION } :



Recompile :
Recompile :
SP sẽ được biên dịch lại trong lúc Thực
SP sẽ được biên dịch lại trong lúc Thực
Thi (run time). Dùng tùy chọn
Thi (run time). Dùng tùy chọn
“recompile”
“recompile”
khi ta
khi ta
dùng các
dùng các
giá trị tạm
giá trị tạm
hoặc các
hoặc các
giá trị không điển hình
giá trị không điển hình
(atypical values)
(atypical values)
mà không muốn

mà không muốn
ghi đè
ghi đè
(
(
override
override
)
)


lên execution plan (bảng thực thi)
lên execution plan (bảng thực thi)
được trữ sẵn
được trữ sẵn
trong bộ nhớ.
trong bộ nhớ.

×