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 (2.98 MB, 207 trang )
Chương 4. T-SQL PROGRAMING
Hình 4.1
4.2.3 Vòng lặp While
WHILE: Chúng ta có thể thực hiện câu lệnh SQL hoặc khối các lệnh dựa trên
một số điều kiện. Các câu lệnh trong While được thực hiện lẵp đi lại lại trong khi biểu
thức Logic còn đúng.
Cú pháp:
WHILE
{
[
{
[
Boolean_expression
statement | statement_block }
BREAK ]
statement | statement_block }
CONTINUE ]
Sử dụng BREAK và CONTINUE:
Chúng ta có thể sử dụng từ khóa CONTINUE hoặc BREAK trong vòng lặp
WHILE để điều khiển việc thực hiện các câu lệnh.
Ví dụ:
USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles
SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear'
45
Chương 4. T-SQL PROGRAMING
4.2.4 Từ khoá GOTO
Chúng ta có thể thay đổi được thứ tự thực hiện bằng việc xác định vị trí (Label).
Cú pháp:
GOTO label
4.2.5 Từ khoá Return
Chúng ta có thể sử dụng RETURN ở bất kỳ vị trí nào để thoát ra khỏi khối, thủ
tục. Những câu lệnh sau lệnh Return không được thực hiện
Cú pháp:
RETURN [ integer_expression ]
4.2.6 Câu lệnh CASE
Từ khóa Case trả lại giá trị dựa trên kết quả của biểu thức logic.
Nó có thể được sử dụng ở bất kỳ vị trí nào phép toán được phép.
Cú pháp:
CASE expression
WHEN expression1 THEN expression1
[[WHEN expression2 THEN expression2] […]]
[ELSE expression]
END
Ví dụ 1:
SELECT au_fname,au_lname,CASE state
WHEN 'OR' THEN 'Oregon'
END AS StateName FROM authors
Ví dụ 2:
UPDATE publishers
SET state =
CASE
WHEN country <> "USA"
THEN "--"
ELSE state
END,
city =CASE
WHEN pub_id = "9999"
THEN "LYON"
ELSE city
END
WHERE country <> "USA" OR
pub_id = "9999"
4.3
Biến(Variables)
SQL Server hỗ trợ 2 loại biến:
46
Chương 4. T-SQL PROGRAMING
-
Grobal variables-Biến địa phương
-
Local variables- Biến toàn cục
Hì
nh 4.2. Sử dụng biến toàn cục
4.3.1 Grobal variables
Biến toàn cục trong SQL Server được bắt đầu bằng 2 ký hiệu @. Chúng ta có
thể truy cập giá trị của bất kỳ biến nào cùng với câu lệnh SELECT đơn giản.
Danh sách các biến toàn cục:
Tên biến
Ý nghĩa
@@CONNECTIONS
Số lượng những kết nối với Server từ khi Server
khởi động lại
@@CPU_BUSY
Thời gian (tính theo milliseconds) của hệ thống tính
từ khi SQL Server khởi động
@@CURSOR_ROWS
Số lượng các dòng dữ liệu của con trỏ mới được mở
gần đây nhất
@@DATEFIRST
Giá trị hiện tại của biến SET DATEFIRST – chỉ ra
ngày đầu tiên của
@@ERROR
Mã số lỗi của câu lệnh T-SQL cuối cùng bị lỗi
@@FETCH_STATUS
Trạng thái truy nhập con trỏ: 0 nếu trạng thái truy
nhật cuối cùng thành công; -1 nếu có lỗi
@@IDENTITY
Giá trị xác định (identity) cuối cùng được thêm vào
@@LANGUAGE
Tên ngôn ngữ hiện tại đang sử dụng
@@MAX_CONNECTIONS Số lượng tối đa các kết nối có thể thực hiện đồng
thời
47
Chương 4. T-SQL PROGRAMING
@@ROWCOUNT
Số lượng các dòng kết quả của câu lệnh SQL gần
đây nhất
@@SERVERNAME
Tên của Server địa phương
@@SERVICENAME
Tên của SQL Service trên máy tính hiện tại
@@TRANSCOUNT
Số lượng những giao dịch đang được mở
@@VERSION
Thông tin về phiên bản SQL Server đang sử dụng
4.3.2 Local variables
Cách khai báo và thực hiện:
Hình 4.3. Sử dụng biến địa phương (Local variables)
4.4
Hàm (Functions)
Hàm có thể được chia làm 3 loại như sau:
Rowset Functions : Loại này thường trả về một object và được đối xử như một
table. Ví dụ như hàm OPENQUERY sẽ trả về một recordset và có thể đứng vị trí của
một table trong câu lệnh Select.
Aggregate Functions : Loại này làm việc trên một số giá trị và trả về một giá
trị đơn hay là các giá trị tổng. Ví dụ như hàm AVG sẽ trả về giá trị trung bình của một
cột.
Scalar Functions : Loại này làm việc trên một giá trị đơn và trả về một giá trị
đơn. Trong loại này lại chia làm nhiều loại nhỏ như các hàm về toán học, về thời gian,
xử lý kiểu dữ liệu String....Ví dụ như hàm MONTH('2002-09-30') sẽ trả về tháng 9.
4.4.1 Hàm Conversion
Hàm conversion dùng để chuyển đổi giá trị của một kiểu dữ liệu này sang kiểu
dữ liệu khác. Thêm nữa, chúng ta có thể sử dụng nó để đạt được một loạt định dạng
ngày tháng đặc biệt. SQL Server cung cấp hàm chuyển đổi đơn giản CONVERT().
48
Chương 4. T-SQL PROGRAMING
Cú pháp:
CONVERT(datatype[(length)] expression [
style])
Ví dụ:
SELECT ‘EMP
EMPLOYEES
ID:’
+
CONVERT
(CHAR(4),
EMPLOYEEID
4.4.2 Hàm Data Parts
DatePart
Abbreviation
Values
Hour
Minute
Second
Millisecond
Day of year
Day
Week
Weekday
Month
Quarter
Year
hh
Mi
Ss
Ms
Dy
Dd
wk
dw
mm
qq
yy
0-23
0-59
0-59
0-999
1-366
1-31
1-53
1-7
1-12
1-4
1753-9999
4.4.3 Hàm ngày tháng và hàm toán học
Hàm ngày tháng (Date Functions)
Date Functions
GETDATE()
DATEADD(datepart,number,date)
DATEDIFF(datepart,date1,date2)
DATENAME(datepart,date)
DATEPART(datepart,date)
Hàm toán học (Mathematical)
Mathematical Functions
ABS(num_expr)
CEILING(num_expr)
FLOOR(num_expr)
POWER(num_expr,y)
ROUND(num_expr,length)
Sign(num_expr)
Sqrt(float_expr)
49
FROM
Chương 4. T-SQL PROGRAMING
4.4.4 Hàm hệ thống (System Function)
Function
DB_ID([‘database_name’])
DB_NAME([database_id])
HOST_ID()
HOST_NAME()
ISNULL(expr,value)
OBJECT_ID(‘obj_name’)
OBJECT_NAME(object_id)
SUSER_SID([‘login_name’])
SUSER_ID([‘login_name’])
SUSER_SNAME([server_user_id])
SUSER_NAME([server_user_id])
USER_ID([‘user_name’])
USER_NAME([user_id])
4.4.5 Hàm nhóm
Sum(col_name)
Avg(col_name)
Count (col_name)
Min(col_name)
Max(col_name)
50
Chương 4. T-SQL PROGRAMING
4.5
Câu hỏi trắc nghiệm
1. Batch là một tập hợp của một hoặc nhiều câu lệnh SQL được Client gửi tới
Server như một khối thống nhất.
A
Đúng
B
Sai
2. Câu lệnh nào theo sau được dùng để thoát khỏi vòng lặp While.
A
Close
B
Exit
C
Break
D
Không có lệnh nào trong 3 lệnh trên
3. Tập hợp một số câu lệnh muốn được thực hiện 10 lần, sử dụng cấu trúc nào sau
đây?
A
IF...ELSE
B
While
C
Case
D
Select
4. Câu lệnh nào theo sau được sử dụng để yêu cầu SQL Server đợi 15 giây trước khi
nó tiếp tục?
A
WAITFOR ’00:00:15’ DELAY
B
WAITFOR DELAY BY ’00:00:15’
C
WAITFOR DELAY ’00:00:15’
D
WAIT FOR ’00:00:15’
5. Kiểm tra đoạn mã sau đây:
DECLARE @v_empcount INT
SELECT @v_empcount = COUNT(*) FROM employee
IF (@v_empcount>20) GOTO great
ELSE
GOTO less
SELECT * FROM employee
great:
PRINT ‘The number is greater’
GOTO end1
GO
less:
PRINT ‘The number is less’
end1:
GO
Câu nào là kết quả của đoạn mã trên nếu có 20 bản ghi trong bảng Employee?
A
Kết quả in ra là: ‘The number is great’
B
Kết quả in ra là: ‘The number is less’
C
Không in ra gì cả
D
Có thông báo lỗi
51
Chương 4. T-SQL PROGRAMING
6. …functions được sử dụng khi cần trả lại các thông tin vể thiết đặt (settings) của
SQL Server?
A
Server
B
Aggregate
C
System
D
Text
7. Phát biểu nào sau đây là đúng cho việc chuyển đổi (conversion) kiểu dữ liệu?
A
Khi chuyển đổi bất kỳ một giá trị nào không phải là 0 (nonzero) sang kiểu dữ liệu bit
thì dữ liệu đó sẽ trở thành 1.
B
Khi chuyển đổi từ kiểu dữ liệu Char thành kiểu dữ liệu Money bạn không thể có được
ký hiệu $ đi kèm.
C
Kiểu dữ liệu Image không thể được chuyển thành kiểu dữ liệu Binary.
D
Nếu bạn không chỉ ra độ dài cho kiểu dữ liệu trong biểu thức chuyển đổi, SQL Server
sẽ tự động gán cho nó có độ dài là 20.
8. Truy vấn nào sau đây sẽ trả lại giá trị của tháng hiện tại?
A
Select DATEPART(mm,getdate()) As ‘Month’
B
Select DATEPART(mon,getdate()) As ‘Month’
C
Select GETDATE(DATEPART(MM)) As ‘Month’
D
Select GETDATE(DATEPART(MON)) As ‘Month’
52