CƠ BẢN VỀ LẬP TRÌNH BẰNG TRANSACT- SQL
10.3.1Khối BEGI N… END
Là một cấu trúc điều kiển, cho phép thực thi một hoặc nhiều phát biểu tùy thuộc vào một điều kiện nào đĩ. câu lệnh để thực thi một khối các câu lệnh theo một điều kiện nào đĩ. Cú pháp: IF condition {statements} [ ELSE [Condition 1] {statements}]
Condition: là một biểu thức logic, cĩ giá trị True hoặc False.Tùy thuộc vào
condition, một trong hai khối lệnh sẽ được thực thi.
Ví dụ 1: Kiểm tra xem trong Customers của NorthWind cĩ chứa các khách hàng đến từ Germany khơng?
USE NorthWind
IF (SELECT COUNT(*) FROM Customers WHERE Country='Germany') > 0
BEGIN
Print ' Cĩ tồn tại các khách hàng từ Germany ở trong cơ sở dữ liệu.'
Print ' statements to process German customers'
ELSE
BEGIN
PRINT ' Khơng cĩ khách hàng đến tử Germany trong cơ sở dữ liệu.'
END Ví dụ 2:
USE pubs GO
DECLARE @msg varchar(255)
IF ( SELECT COUNT(price) FROM titles
WHERE title_id LIKE 'TC%' AND price BETWEEN 10 AND 20) > 0
BEGIN
SET NOCOUNT ON
SET @msg = 'Cĩ vài quyển sách cĩ giá từ $10 đến $20. Các sách đĩ là:'
PRINT @msg
SELECT title FROM titles
WHERE title_id LIKE 'TC%' AND price BETWEEN 10 AND 20
END ELSE BEGIN
SET NOCOUNT ON
SET @msg = 'Khơng cĩ quyển sách nào cĩ giá từ $10 đến $20. Bạn nên tham khảo các quyễn sách cĩ giá nhỏ hơn $10 sau đây.'
PRINT @msg
SELECT title FROM titles
WHERE title_id LIKE 'TC%' AND price < 10 END
Ví dụ 3:
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title FROM titles WHERE type = 'mod_cook'
END ELSE
IF (SELECT AVG(price)
FROM titles WHERE type = 'mod_cook')> $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title FROM titles WHERE type = 'mod_cook' END
10.3.4 Biểu thức CASE.
Biểu thức CASE là một biểu thức điều kiện được áp dụng bên trong một phát biểu khác. Case trả về các giá trị khác nhau tuỳ thuộc vào điều kiện hoặc một điều khiển nào đĩ.
Dạng 1:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Dạng 2: CASE