Phần 3 bài giảng Hệ quản trị cơ sở dữ liệu: Lập trình trên SQL Server cung cấp cho người học các kiến thức: Cấu trúc điều khiển trong T-SQL, cú pháp searched CASE, cấu trúc WHILE, các toán tử đặc biệt,... Mời các bạn cùng tham khảo.
Trang 1Lập trình trên SQL Server
LẠI HIỀN PHƯƠNG
EMAIL: LHPHUONG@TLU.EDU.VN
Trang 2Cấu trúc điều khiển trong T-SQL
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 2
Trang 3END
Trang 4Ví dụ cấu trúc IF … ELSE
Ví dụ: Từ bảng SinhVien và bảng KetQua, tính
điểm trung bình của ‘Nguyễn Văn A’ và hiển thị
‘Đạt’ nếu điểm trung bình lớn hơn hoặc bằng 3.5
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 4
Trang 5Ví dụ cấu trúc IF … ELSE
Các cấu trúc IF … ELSE có thể lồng nhau
Trang 6Cấu trúc lựa chọn CASE
CASE trong SQL dùng để đánh giá một danh sách
các điều kiện và trả về 1 trong các biểu thức kết
quả thỏa mãn điều kiện đánh giá
CASE có 2 định dạng:
CASE đơn giản (Simple CASE): so sánh một biểu thức vớimột bộ các biểu thức đơn giản để xác định kết quả
CASE tìm kiếm (Searched CASE): đánh giá một bộ các
biểu thức Boolean để xác định kết quả
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 6
Trang 7Cú pháp Simple CASE
Trang 8Ví dụ Simple CASE
Ví dụ: hiện ra màn hình tên tháng hiện tại
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 8
Trang 9Cú pháp Searched CASE
Trang 10Ví dụ: Searched CASE
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 10
Ví dụ: Viết lại ví dụ xếp loại SV Nguyễn Văn A
Trang 11Khối lệnh 2 [CONTINUE]
Khối lệnh 3
END
BREAK: thoát khỏi vòng lặpWHILE, tất cả các lệnh sau từkhóa BREAK và trước từ khóaEND sẽ bị bỏ qua
CONTINUE: bỏ qua các câulệnh sau từ khóa CONTINUE vàtrước từ khóa END để nhảy đếnvòng lặp tiếp theo của vòng lặpWHILE
Trang 12Ví dụ cấu trúc WHILE
Ví dụ: Hiển thị các số từ 1 đến 9
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 12
Trang 13EXISTS Tồn tại EXISTS ( SELECT Diem from KETQUA)
IN Kiểm tra xem một giá trị có
tồn tại trong một tập cho trước không
@GT in (N'Nam', N'Nữ')
Trang 14Ví dụ các toán tử đặc biệt
Ví dụ: Truy vấn hiển thị MaSV, HoTen, KetQua của tất cả các sinh
viên trong bảng SinhVien với KetQua = ‘Còn nợ môn’ với sinh viên có môn thi chưa đạt và ‘Đã qua hết’ với sinh viên đã qua hết các môn
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 14
Trang 15Ví dụ các toán tử đặc biệt
Ví dụ: cách khác dùng ALL
Trang 16Ví dụ các toán tử đặc biệt
Ví dụ: cách khác dùng ANY
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 16
Trang 17Ví dụ các toán tử đặc biệt
Ví dụ: cách khác dùng IN
Trang 18Sử dụng biến kiểu dữ liệu
Cursor
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 18
Trang 19Khái niệm về cursor
Các lệnh của SQL Server làm việc trên một nhóm nhiềubản ghi
Cursor là cấu trúc giúp làm việc với từng bản ghi tại mộtthời điểm
Khai báo cursor như một câu lệnh SELECT
Có thể di chuyển giữa các bản ghi trong cursor để làm việc
Có thể dùng cursor để cập nhật dữ liệu
Trang 20Các bước sử dụng kiểu dữ liệu cursor
Định nghĩa biến kiểu cursor bằng lệnh DECLARE
Sử dụng lệnh OPEN để mở ra cursor đã định nghĩa trướcđó
Đọc và xử lý trên từng dòng lệnh bên trong cursor
Đóng cursor lại bằng lệnh CLOSE và DEALLOCATE
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 20
Trang 21Định nghĩa biến kiểu Cursor
Cú pháp:
Trang 23Phương pháp di chuyển trong Cursor
FORWARD_ONLY: duyệt các bản ghi từ đầu đến cuối, theochiều đi tới
SCROLL: cursor được phép di chuyển tới lui, qua lại các
dòng bản ghi trong cursor
Trang 24Kiểu cursor
STATIC (cursor tĩnh) : khi có sự thay đổi bên dưới dữ liệugốc thì các thay đổi đó không được cập nhật tự động trong
dữ liệu của cursor
DYNAMIC (cursor động): khi có sự thay đổi bên dưới dữ
liệu gốc thì các thay đổi đó được cập nhật tự động trong
dữ liệu của cursor
KEYSET: gần giống DYNAMIC Những thay đổi trên cột
không là khóa chính trong bảng gốc sẽ tự đọng cập nhật
trong dữ liệu cursor Tuy nhiên, những mẩu tin vừa thêmmới hoặc vừa hủy bỏ sẽ không hiển thị trong dữ liệu cursor
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 24
Trang 25Các tùy chọn khác
READ_ONLY : không thể cập nhật dữ liệu
SCROLL_LOCK: Chỉ định SQL_SERVER khóa các mẩu tin cần thay đổi
giá trị hoặc bị hủy bỏ bên trong bảng gốc nhằm đảm bảo hành động cập nhật luôn thành công
Câu lệnh SQL: chỉ định danh sách các cột sẽ được truy cập bởi
cursor
UPDATE [OF Danh sách cột cần cập nhật]:
nếu được chỉ định thì chỉ những cột trong danh sách được sửa
nếu không được chỉ định thì tất cả các cột được sửa trừ khi con trỏ kiểu READ_ONLY
Trang 26Ví dụ: định nghĩa biến cursor
Ví dụ: khai báo con trỏ gắn với các bản ghi của bảngSinhVien
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 26
Trang 27Mở Cursor
Cú pháp:
OPEN Tên_con_trỏ
Ví dụ:
Trang 28Đọc và xử lý từng dòng lệnh FETCH
Cú pháp:
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 28
Trang 29Kiểm tra việc đọc dữ liệu
Trang 30Đọc và xử lý từng dòng lệnh FETCH
Ví dụ: Đếm số sinh viên
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 30
Trang 32Ví dụ: đầy đủ các bước với cursor
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 32
Trang 33Ví dụ: sử dụng cursor hiển thị danh
sách MaSV, HoTen, GioiTinh
Trang 34Xử lý lỗi
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 34
Trang 35Khối lệnh TRY … CATCH
Ý nghĩa : Thực hiện các lệnh trong khối TRY, nếu gặp lỗi sẽchuyển qua xử lý bằng các lệnh trong khối CATCH
Cú pháp:
Trang 36Khối lệnh TRY … CATCH
Trang 37Khối lệnh TRY … CATCH
Ví dụ :
Trả về
Trang 38Mộ số hàm ERROR thường dùng
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 38
Trang 39 Chuỗi thông báo lỗi bất kỳ
Mã thông báo lỗi do người dùng định nghĩa trước bằng sp_addmessage và được lưu trong sys.messages Giá trị phải > 50000
Mức_độ: số có giá trị từ 0 đến 25 thể hiện mức độ nghiêm trọng
Trang 40Thủ tục RAISERROR (Ví dụ)
LẠI HIỀN PHƯƠNG - HỆ QUẢN TRỊ CSDL 40