Giới thiệu, khái niệm, cú pháp, demo của Cursor và Function
trong hệ quản trị CSDL
Tham khảo demo vui lòng liên hệ email: pinuit11@gmail.com
Chúc các bạn học tập thật tốt!
4. 4
Cursor
- Cursor là một kiểu dữ liệu đặc biệt (kiểu dữ liệu con
trỏ), được dùng để duyệt qua từng dòng dữ liệu trả về
từ câu truy vấn SELECT đó, giúp ta có thể có những
xử lý khác nhau cho từng dòng dữ liệu cụ thể.
Khái Niệm
Đặc điểm:
- Cho phép thao tác trên từng dòng dữ liệu trả về từ
lệnh SELECT.
- Do phải duyệt qua từng dòng dữ liệu nên đây là cách
xử lý chậm nhất.
5. 5
Cursor
Cú Pháp
DECLARE cursor_name CURSOR
[ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
Trong đó:
+ LOCALGLOBAL : chỉ định phạm vi hoạt động của biến Cursor.
+ FORWARD_ONLY: chỉ định việc đọc dữ liệu trong cursor chỉ theo
chiều đi tới.
+ SCROLL: chỉ định việc đọc dữ liệu trong cursor được phép di
chuyển tới lui.
6. 6
Cursor
Cú Pháp
DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR
FOR Select_statement
+ trong đó Select_statement là câu lệnh lựa chọn đến các cột
bảng và ta cần đọc..
+ INSENSITIVE: Tạo 1 bảng copy tạm, thay thế bảng chính..
Lệnh khai báo cursor:
Lệnh mở cursor: OPEN cursor_name
7. 7
Cursor
Cú Pháp
@@FETCH_STATUS = 0 : lấy dữ liệu thành công.
@@FETCH_STATUS < 0 : không lấy được dữ liệu.
Kiểm tra kết quả lấy dữ liệu từ cursor (kiểm tra ngay
sau lệnh FETCH NEXT):
CLOSE cursor_name
DEALLOCATE cursor_name
Đóng cursor:
Lệnh lấy dữ liệu từ trong cursor:
FETCH [NEXT| PRIOR| FIRST| LAST| ] FROM cursor_name
INTO @variable1, @variable2, …
8. 8
Cursor
các kiểu cursor
DYNAMIC (cursor động): Khi có sữ thay đổi dữ liệu gốc (base
table) thì các dữ liệu đó tự động cập nhật trong dữ liệu của cursor.
KEY SET (gần như DYNAMIC): Tuy nhiên với mẩu tin vừa thêm
mới hoặc những mẫu tin vừa hủy bỏ sẽ không hiển thị trong dữ liệu của
cursor có kiểu là keyset.
STATIC (cursor tĩnh): Khi có sự thay đổi bên dưới dữ liệu gốc (base
table) thì các dữ liệu đó không được tự động cập nhật trong dữ liệu của
curso.
READ_ONLY: dùng chỉ định dữ liệu bên trong cursor là chỉ đọc nhằm
hạn chế việc sửa đổi dữ liệu. Khi khai báo cursor với kiểu dữ liệu là tĩnh
(STATIC) thì dữ liệu trong cursor xem như là chỉ đọc.
10. 10
Function
Giới Thiệu
Trong SQLServer ngoài những hàm hệ thống có sẵn
như các nhóm hàm: String Functions, Date and Time
Functions, Mathematical Functions v.v.. ta cũng có
thể xây dựng các hàm nhằm phục vụ nhu cầu tính
toán, phát triển ứng dụng hoặc các mục đích xử dụng
khác nhằm mang lại sự tiện lợi hơn cho chúng ta.
11. 11
Function
Khái Niệm
- Cũng như Stored Procedure, Hàm (Function) bao
gồm một tập nhiều câu lệnh SQL được kết hợp lại
thành một nhóm và tạo thành 1 đối tượng cho phép
sử dụng hàm như một thành phần của biểu thức
trong các câu truy vấn hay cập nhật dữ liệu.
- Hàm luôn trả về giá trị thông qua tên hàm.
12. 12
Function
- Phân loại: gồm 2 loại
+ Hàm hệ thống: String Functions, Date and Time
Functions, Mathematical Functions v.v.
+ Hàm do người dùng tự định nghĩa: Hàm trả về
kiểu bảng (Table valued Functions) và hàm trả về giá
trị vô hướng (Scalar valued Functions).
Khái Niệm
13. 13
Cú Pháp
CREATE FUNTION function_name
( [@parameter_name parameter_data_type] )
RETURNS [return Data-type] /*Returns có ‘s’ */
AS
Begin
return [scalar value/select command]
End
Tạo hàm:
Xóa hàm: DROP FUNTION function_name
Function
14. 14
Hàm trả về giá trị vô hướng
Hàm trả về một giá trị kiểu chuỗi, ngày tháng, kiểu
số v.v.. do người dùng định nghĩa. Khi bạn đã định
nghĩa hàm trả về giá trị, bạn có thể sử dụng nó trong
các biểu thức tính toán của hàm khác, của Stored
Procedure hay trong các câu truy vấn v.v..
Function
15. 15
Hàm kiểu bảng
Hàm kiểu bảng có kết quả trả về là một cấu trúc kiểu
bảng do đó bạn có thể dùng để truy vấn (không có thêm,
sửa, xóa dữ liệu) như một Table thông thường như lệnh
SELECT, JOINT, ... Hàm kiểu bảng sẽ mềm dẻo và linh
hoạt hơn vì nó có thể nhận các tham số đầu vào và có
thể có nhiều lệnh thao tác dữ liệu bên trong hàm.
Function