Xem mẫu
- MÔN: HỆ QUẢN TRỊ CSDL
GVHD: ThS Đỗ Thị Minh Phụng
- Cú pháp điều khiển
IF … [ELSE]
IF EXISTS
WHILE … [BREAK] [CONTINUE]
CASE … WHEN … END
Stored – Procedure (Thủ tục lưu trữ)
- Cú pháp điều khiển
IF … [ELSE]
IF EXISTS
WHILE … [BREAK] [CONTINUE]
CASE … WHEN … END
Stored – Procedure (Thủ tục lưu trữ)
- IF (T-SQL)
Ý nghĩa
Thiết lập điều kiện cho việc thực thi các câu lệnh
T-SQL. Câu lệnh T-SQL sau từ khóa IF và biểu thức chứa
điều kiện cần thỏa. Nếu biểu thức điều kiện được thỏa,
câu lệnh T-SQL này sẽ được thực thi. Ngoài ra, nếu có từ
khóa ELSE (tùy ý) thì câu lệnh sau ELSE sẽ được thực
thi, khi biểu thức điều kiện không thỏa.
- Cú pháp
IF biểu_thức_điều_kiện
{ câu_lệnh_sql | khối_lệnh_sql }
[ ELSE
{ câu_lệnh_sql | khối_lệnh_sql } ]
- Nếu biểu thức điều kiện có chứa câu lệnh SELECT thì câu
SELECT phải được đóng ngoặc.
- Khối lệnh SQL được định nghĩa bởi BEGIN và END. Nếu không
có khối lệnh thì chỉ 1 câu lệnh sau IF hoặc ELSE được thực hiện.
- Câu lệnh IF có thể được sử dụng lồng nhau.
- Cú pháp điều khiển
IF … [ELSE]
IF EXISTS
WHILE … [BREAK] [CONTINUE]
CASE … WHEN … END
Stored – Procedure (Thủ tục lưu trữ)
- IF EXISTS ... là một trong những trường hợp của câu lệnh IF, với
biểu thức chứa điều kiện là câu lệnh sql EXISTS
IF EXISTS biểu_thức_điều_kiện
Cú pháp
…
Ví Dụ
- Cú pháp điều khiển
IF … [ELSE]
IF EXISTS
WHILE … [BREAK] [CONTINUE]
CASE … WHEN … END
Stored – Procedure (Thủ tục lưu trữ)
- While (T-SQL)
Ý nghĩa
Thiết lập 1 điều kiện cho sự lặp lại của việc thi hành 1
câu lệnh SQL hay một khối lệnh. Các câu lệnh được chạy trong
vòng lặp nhiều lần, miễn là điều kiện đã cho luôn thỏa. Việc thực
hiện các câu lệnh trong vòng lặp WHILE, có thể được điều khiển
từ bên trong vòng lặp với từ khóa BREAK và CONTINUE.
Cú pháp
WHILE Biểu_thức_Boolean
{ câu_lệnh_SQL | khối_lệnh | BREAK | CONTINUE }
- - Biểu_thức_Boolean: là biểu thức trả về giá trị TRUE hay FALSE.
Nếu biểu thức có chứa một lệnh SELECT thì câu lệnh SELECT phải
được đóng ngoặc.
- câu_lệnh_SQL | khối_lệnh: Là bất kỳ câu lệnh T-SQL đơn nào,
hay các câu lệnh được nhóm lại thành một khối lệnh. Để định nghĩa
1 khối lệnh, ta sử dụng các từ khóa điều khiển BEGIN và END.
- - Từ khóa BREAK : thoát khỏi vòng lặp WHILE trong cùng nhất.
Các câu lệnh nằm sau từ khóa END kết thúc của vòng lặp sẽ
thực thi bình thường.
- Từ khóa CONTINUE : Làm cho vòng lặp WHILE bắt đầu một
vòng lặp mới, vòng lặp cũ bị kết thúc nên các câu lệnh sau từ
khóa CONTINUE sẽ bị bỏ qua.
- Ví Dụ
Sử dụng vòng lặp WHILE với BREAK và CONTINUE
Nếu tổng giá của các sản phẩm nhỏ hơn 1000, ta tăng giá mỗi
sản phẩm thêm 5%. Nếu sau khi tăng giá, tổng giá ít hơn hay
bằng 1250 thì ta lặp lại việc tăng giá. Việc tăng giá kết thúc khi
ta có tổng giá cao hơn 1250.
- Cú pháp điều khiển
IF … [ELSE]
IF EXISTS
WHILE … [BREAK] [CONTINUE]
CASE … WHEN … END
Stored – Procedure (Thủ tục lưu trữ)
- CASE (T-SQL)
Ý nghĩa
- Đánh giá theo một danh sách các điều kiện và trả về một trong
nhiều biểu thức kết quả đã cho.
- CASE có thể được sử dụng ở bất kì câu lệnh hay mệnh đề
chứa biểu thức nào. Cụ thể, ta có thể sử dụng CASE trong các
câu lệnh SELECT, UPDATE, DELETE và SET. Còn các mệnh đề
hỗ trợ CASE như IN, WHERE, ORDER BY và HAVING.
Phân loại
Biểu thức CASE có 2 dạng : dạng cơ bản và dạng tìm kiếm.
+ Dạng cơ bản : so sánh 1 biểu thức với một tập các biểu thức
đơn giản để chọn ra kết quả.
+ Dạng tìm kiếm : đánh giá một tập các biểu thức Boolean để
chọn ra kết quả.
- Cú pháp
Dạng cơ bản:
CASE biểu_thức_so_sánh
WHEN biểu_thức_điều_kiện_1 THEN biểu_thức_kết_quả_1
WHEN biểu_thức_điều_kiện_2 THEN biểu_thức_kết_quả_2
WHEN biểu_thức_điều_kiện_3 THEN biểu_thức_kết_quả_3
[ ...n ]
[ ELSE biểu_thức_kết_quả_else ]
END
Dạng tìm kiếm:
CASE
WHEN biểu_thức_Boolean_đk1 THEN biểu_thức_kết_quả_1
WHEN biểu_thức_Boolean _đk2 THEN biểu_thức_kết_quả_2
WHEN biểu_thức_Boolean _đk3 THEN biểu_thức_kết_quả_3
[ ...n ]
[ ELSE biểu_thức_kết_quả_else ]
END
- - Biểu_thức_so_sánh: biểu thức cần đánh giá với các điều kiện ở
CASE dạng cơ bản.
- Biểu_thức_điều_kiện_x ( x=1,2,3… ): là các biểu thức đơn giản
để so sánh với biểu_thức_so_sánh ở CASE dạng cơ bản. Lưu ý,
kiểu dữ liệu của biểu_thức_so_sánh và các biểu_thức_điều_kiện_x
phải giống nhau hoặc phải có ép kiểu ngầm định.
- Biểu_thức_Boolean_điều_kiện_x ( x=1,2,3… ): là các biểu thức
đơn giản để đánh giá TRUE/FALSE ở CASE dạng tìm kiếm.
- Biểu_thức_kết_quả_x ( x=1,2,3… ): là các biểu thức được trả về
khi biểu_thức_so_sánh bằng với 1 trong các biểu_thức_điều_kiện,
hoặc 1 trong biểu_thức_Boolean_điều_kiện có giá trị là TRUE.
-Biểu_thức_kết_quả_else: là biểu thức trả về khi các so sánh
đánh giá biểu thức không trả về TRUE. Nếu tham số này không có
và không có so sánh nào trả về TRUE thì CASE trả về NULL.
Lưu ý, kiểu dữ liệu của biểu_thức_điều_kiện và các
biểu_thức_Boolean_điều_kiện phải giống nhau hoặc phải có ép
kiểu ngầm định.
- Ví Dụ
Sử dụng câu lệnh SELECT với CASE dạng cơ bản
Sử dụng câu lệnh SELECT với CASE dạng tìm kiếm
- Cú pháp điều khiển
IF … [ELSE]
IF EXISTS
WHILE … [BREAK] [CONTINUE]
CASE … WHEN … END
Stored – Procedure (Thủ tục lưu trữ)
- Stored Procedure (SP)
1. Giới thiệu
- SP chứa tập hợp 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 store procedure đó, nhận các tham số truyền
vào, thực thi các câu lệnh SQL bên trong và trả kết quả về lại
client.
- Các cấu trúc điều khiển (IF, WHILE, FOR) có thể được sử dụng
trong thủ tục.
- Bên trong store procedure có thể sử dụng các biến như trong
ngôn ngữ lập trình nhằm lưu giữ các giá trị tính được tính toán
hoặc được truy xuất được từ cơ sở dữ liệu.
- 2. Ưu điểm
a. Performance - tăng hiệu năng làm việc của hệ thống
• Đơn giản hoá các thao tác trên cơ sở dữ liệu: nhờ vào khả năng
module hoá các thao tác này.
•Thực thi nhanh hơn:
Store procedure được phân tích, tối ưu khi tạo ra nên việc
thực thi chúng nhanh hơn nhiều so với việc thực hiện một tập
rời rạc các câu lệnh SQL tương đương theo cách thông
thường.
Cú pháp của các câu lệnh SQL trong store procedure đã
đượ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.
User 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 lại nhiều lần thì execute plan sẽ được sử
dụng lại nên sẽ làm việc nhanh hơn.
nguon tai.lieu . vn