SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
11
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
SQL Server
22
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Lập trình v i CSDL
5
33
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Biến cục bộ
44
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Khai báo biến cục bộ
• Dùng để l u tr các giá tr t m th i trong quá trình
tính toán
 Biến phải có kiểu dữ liệu
 Biến muốn sử dụng trong một batch phải khai báo trước
DECLARE @Tên_biến Kiểu_dữ_liệu [, ...]
Ví dụ :
DECLARE @Tongsldat INT, @Hotenncc CHAR(50)
DECLARE @Ngayxh DATETIME
55
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Gán giá tr cho biến
SET @Biến = Giá_trị
SET @a = 5
Select @Biến = Tên_Cột From Tên_Bảng
Select @ConLai = TonCuoiKy From TonKho Where
MaVTu = ‘VT010’ And NamThang = ‘200402’
Sử dụng lệnh SET hoặc SELECT
66
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Xem giá tr hiện hành của biến
• Lệnh PRINT
Print @Biến
Print @A
• Khi có kết hợp với chuỗi, phải đổi kiểu dữ liệu sang kiểu
chuỗi bằng hàm CAST hay CONVERT
Print ‘Giá trị của @A ‘ + cast(@A as char(4))
77
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ph m vi ho t động của biến
• Một biến chỉ có ph m vi ho t động cục bộ
 Trong một Batch
 Trong một Stored Procedure hay Trigger
DECLARE @Ngaydhgn DATETIME
SELECT @Ngaydhgn=MAX(NGAYDH)
FROM DONDH
GO
PRINT 'Ngày đặt hàng gần nhất: ' +
CONVERT(CHAR(12),@Ngaydhgn)
GO
88
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Biến hệ thống
99
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ý nghĩa sử dụng
• Cung cấp các thông tin hệ thống nh
 Phiên bản SQL Server
 Số dòng dữ liệu vừa được xử lý bởi câu lệnh
 Mã lỗi
 Số lượng kết nối
 Tình trạng cursor
 …
• Không cần khai báo
 Biến do SQL Server định sẵn
 Tên bắt đầu bởi @@
1010
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Một vài biến hệ thống th ng dùng
• @@RowCount
 Tổng số mẩu tin được tác động của câu lệnh truy vấn gần nhất.
• @@Error
 Số mã lỗi của câu lệnh thực hiện gần nhất
 Khi một câu lệnh thực hiện thành công thì giá trị là 0.
• @@Fetch_Status
 Trạng thái của việc đọc dữ liệu trong bảng theo cơ chế từng mẩu
tin (cursor).
 Khi đọc dữ liệu của mẩu tin thành công thì giá trị là 0.
1111
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các toán tử
1212
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Toán tử số h c
Ký hiệu Ý nghĩa
+ Thực hiện phép cộng hai số
- Thực hiện phép trừ hai số.
* Thực hiện phép nhân hai số.
/ Thực hiện phép chia hai số.
% Thực hiện phép chia lấy phần dư.
1313
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Toán tử nối chuỗi
• Sử dụng dấu + làm toán tử nối chuỗi
SELECT 'Hello' + ' ' + 'The World!'
SELECT 'Ngày đặt hàng D007 là: '
+ CAST(NGAYDH AS CHAR(11))
FROM DONDH
WHERE SODH='D007'
1414
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Toán tử so sánh
Ký hiệu Ý nghĩa
= Thực hiện phép so sánh bằng.
> Thực hiện phép so sánh lớn hơn.
< Thực hiện phép so sánh nhỏ hơn.
>= Thực hiện phép so sánh lớn hơn hoặc bằng.
<= Thực hiện phép so sánh nhỏ hơn hoặc bằng.
<> Thực hiện phép so sánh khác.
!= Thực hiện phép so sánh khác.
!> Thực hiện phép so sánh không lớn hơn.
!< Thực hiện phép so sánh không nhỏ hơn.
1515
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Toán tử luận lý
• Sử dụng các toán tử thông th ng AND,
OR, NOT vẫn dùng trong các câu SQL
SELECT * FROM VATTU
WHERE (DVTINH='Bộ' AND PHANTRAM>10)
OR (DVTINH='Cái' AND
PHANTRAM>20)
1616
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cấu trúc điều khiển
1717
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cấu trúc rẽ nhánh IF...ELSE
IF Biểu_thức_luận_lý
Câu_lệnh1 | Khối_lệnh1
[ ELSE
Câu_lệnh2 | Khối_lệnh2 ]
1818
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ví Dụ :
IF (SELECT COUNT(*) FROM CTPXUAT WHERE SLXUAT>4) > 0
BEGIN
PRINT 'Danh sách các hàng hóa bán với số lượng > 4'
SELECT CTPX.MAVTU, TENVTU, SLXUAT
FROM CTPXUAT CTPX INNER JOIN VATTU VT
ON VT.MAVTU=CTPX.MAVTU
WHERE SLXUAT>4
END
ELSE
PRINT 'Chưa bán hàng hóa nào với số lượng >4'
1919
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cú pháp If Exists
IF EXISTS (SELECT * FROM CTPXUAT WHERE SLXUAT>4)
BEGIN
PRINT 'Danh sách các hàng hóa bán với số lượng > 4'
SELECT CTPX.MAVTU, TENVTU, SLXUAT
FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU=CTPX.MAVTU
WHERE SLXUAT>4
END
ELSE
PRINT 'Chưa bán hàng hóa nào với số lượng >4'
IF EXISTS (Câu_lệnh_SELECT)
Câu_lệnh1 | Khối_lệnh1
[ ELSE
Câu_lệnh2 | Khối_lệnh2 ]
2020
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cấu trúc lặp WHILE
DECLARE @Songuyen INT
SET @Songuyen=100
WHILE (@Songuyen<110)
BEGIN
PRINT 'Số nguyên : ' + CONVERT(CHAR(3), @Songuyen)
SET @Songuyen = @Songuyen + 1
END
WHILE Biểu_thức_luận_lý
BEGIN
Các_lệnh_lặp
END
2121
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Sử dụng biến kiểu d liệu
cursor
2222
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Khái niệm về cursor
• Các lệnh của SQL Server làm việc trên một
nhóm nhiều mẩu tin
• Cursor là cấu trúc giúp làm việc v i từng mẩu
tin t i một th i điểm
 Khai báo cursor như một câu lệnh SELECT
 Có thể di chuyển giữa các mẩu tin trong cursor để làm
việc
 Có thể dùng cursor để cập nhật dữ liệu (Update, Delete)
2323
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cá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
 Có hai loại cursor: Local, Global
 Cách di chuyển mẩu tin trong cursor: Forward only, scroll
 Cách quản lý dữ liệu của cursor: static, dynamic, keyset
• Sử dụng lệnh OPEN để mở ra cursor đã định nghĩa trước đó
• Đọc và xử lý trên từng dòng dữ liệu bên trong cursor
 Sử dụng biến @@Fetch_status
 Các lệnh Fetch và cấu trúc while
• Đóng cursor lại bằng lệnh CLOSE và DEALLOCATE
 Sau khi close, có thể mở lại
 Deallocate: hủy cursor khỏi bộ nhớ
2424
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cú pháp Declare
DECLARE Tên_cursor CURSOR
[LOCAL | GLOBAL]
[FORWARD_ONLY | SCROLL]
[STATIC | DYNAMIC | KEYSET]
[READ_ONLY | SCROLL_LOCK]
FOR Câu_lệnh_SELECT
[FOR UPDATE [OF Danh_sách_cột_cập_nhật]]
DECLARE cur_Vattu CURSOR
DYNAMIC
FOR
SELECT * FROM VATTU
2525
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cú pháp Open
OPEN Tên_cursor
DECLARE cur_Vattu CURSOR
DYNAMIC
FOR
SELECT * FROM VATTU
OPEN cur_Vattu
2626
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cú pháp FETCH
FETCH [NEXT | PRIOR | FIRST | LAST
| ABSOLUTE n | RELATIVE n]
FROM Tên_cursor
[INTO Danh_sách_biến]
 Absolute n: Đọc dòng thứ n trong cursor
 Relative n: Đọc dòng thứ n kể từ vị trí hiện hành
2727
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ví dụ hoàn chỉnh
--1. Khai báo biến cursor
DECLARE cur_Vattu CURSOR KEYSET
FOR SELECT * FROM VATTU
WHERE MAVTU LIKE 'TV%'
ORDER BY MAVTU
--2. Mở cursor
OPEN cur_Vattu
--3. Đọc dữ liệu
FETCH NEXT FROM cur_Vattu
WHILE @@FETCH_STATUS = 0
BEGIN
-- Xử lý dòng mới vừa đọc được
-- Thực hiện đọc tiếp các dòng kế
FETCH NEXT FROM cur_Vattu
END
--4. Đóng cursor
CLOSE cur_Vattu
DEALLOCATE cur_Vattu
2828
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm th ng dùng
2929
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm chuyển đổi kiểu d liệu
Một hàm của SQL Server có thể sử dụng ở bất cứ đâu thay
cho một giá trị cụ thể
• Đổi một số thành chuỗi
 STR (Số_thực, Số_ký_tự [, Số_lẻ])
• Đổi kiểu dữ liệu
 CAST (Biểu_thức AS Kiểu_dữ_liệu)
• Đổi kiểu dữ liệu và định dạng
 CONVERT (Kiểu_dữ_liệu, Biểu_thức [, Định_dạng])
3030
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Một số đ nh d ng chuỗi ngày thông
dụng
yy yyyy Chuỗi kết quả
- 0 hoặc 100 mon dd yyyy hh:miAM (or PM)
1 101 mm/dd/yyyy
2 102 yy.mm.dd
3 103 dd/mm/yy
5 105 dd-mm-yy
6 106 dd mon yy
8 108 hh:mm:ss
9 109 mon dd yyyy hh:mi:ss:mmmAM (or PM)
10 110 mm-dd-yy
11 111 yy/mm/dd
12 112 yymmdd
…
Print convert(nvarchar(50), getdate(), 5) 23-05-09
Print convert(nvarchar(50), getdate(), 105) 23-05-2009
3131
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm ngày gi
• Cộng ngày
 DATEADD (Đơn_vị, Con_số, Ngày_chỉ_định)
• So sánh hai biến ngày
 DATEDIFF (Đơn_vị, Ngày1, Ngày2)
• Lấy tên ngày, tháng, năm
 DATENAME (Đơn_vị, Ngày)
• Thời điểm hiện hành
 GETDATE()
• Lấy một thành phần ngày, giờ trong biến ngày
 DATEPART (Đơn_vị, Ngày)
• Lấy ngày, tháng, năm của biến ngày
 DAY (Ngày)
 MONTH (Ngày)
 YEAR (Ngày)
3232
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Đơn_v (Thành phần của ngày) Ch viết tắt
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
3333
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm toán h c
• Lấy trị tuyệt đối
 ABS (Biểu_thức_số)
• Hằng số Pi
 PI()
• Luỹ thừa
 POWER (Biểu_thức_số, Số_mũ)
• Lấy số ngẫu nhiên
 RAND ([Số_nguồn])
• Làm tròn số
 ROUND (Biểu_thức_số, Vtrí_làm_tròn)
• Dấu của kết quả biểu thức : SIGN (Biểu_thức_số)
• Lấy căn bậc 2 : SQRT (Biểu_thức_số)
3434
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm xử lý chuỗi
• Hàm viết hoa, th ng
 UPPER (Chuỗi), LOWER (Chuỗi)
• Hàm cắt chuỗi
 LEFT (Chuỗi nguồn, Số_ktự), RIGHT (Chuỗi nguồn, Số_ktự)
 SUBSTRING (Chuỗi nguồn,Vị_trí,Số_ktự)
• Hàm cắt khoảng trắng, t o chuỗi khoảng trắng
 LTRIM (Chuỗi), RTRIM (Chuỗi), SPACE (N)
• Hàm t o chuỗi lặp
 REPLICATE (Chuỗi_lặp, N)
• Chiều dài chuỗi
 LEN (Chuỗi)
• Đảo chuỗi
 REVERSE (Chuỗi)
• Tìm và thay thế chuỗi
 REPLACE (Chuỗi nguồn, Chuỗi_tìm, Chuỗi_thay_thế)
• Đổi từ số thành ký t và ng ợc l i
 CHAR (Số) , ASCII(Ký_tự)
3535
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Xử lý lỗi
3636
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Khố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 : BEGIN TRY
{ các câu lệnh }
END TRY
BEGIN CATCH
{ các câu lệnh}
END CATCH
• Các điểm cần lưu ý :
• TRY và CATCH phải cùng lô xử lý
• Sau khối TRY phải là khối CATCH
• Có thể lồng nhiều cấp
3737
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Khối lệnh TRY…CATCH
Ví dụ :
BEGIN TRY
SELECT * FROM BangKhongTonTai;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() as ErrorNumber,
ERROR_MESSAGE() as ErrorMessage;
END CATCH
3838
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Một số hàm ERROR th ng dùng
ERROR_NUMBER() : Trả về mã số của lỗi
ERROR_MESSAGE() Trả về chuỗi lỗi
ERROR_SEVERITY() returns the error severity.
ERROR_STATE() returns the error state number.
ERROR_LINE() : Trả về dòng gây ra lỗi
ERROR_PROCEDURE() Trả về tên thủ tục/ trigger gây ra lỗi
3939
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Thủ tục RAISERROR
• Ý nghĩa : Trả thông báo lỗi về cho ứng dụng
• Cú pháp :
• Raiserror(tbao_loi, muc_do, trang_thai [, cac_tham_so] )
Trong đó:
tbao_loi : - 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 lớn hơn
50000.
- chuỗi thông báo lỗi bất kỳ.
muc_do : Số có giá trị từ 025 thể hiện mức độ nghiêm trọng của lỗi.
trang_thai : Số từ 1-127 để xác định vị trí lỗi khi sử dụng cùng một tbao_loi
tại nhiều điểm khác nhau
cac_tham_so : Hỗ trợ cho các tbao_loi cần tham số
4040
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ví dụ sử dụng RAISERROR
…
IF @nPhanTram NOT BETWEEN 0 AND 100
BEGIN
SET @sErrMsg = N‘Tỉ lệ phầm trăm phải nằm trong đoạn [0,100]’
RAISERROR(@sErrMsg, 16, 1)
RETURN
END
…
Msg 50000, Level 16, State 1, Line 6
Tỉ lệ phầm trăm phải nằm trong đoạn [0,100]

Mais conteúdo relacionado

Mais procurados

lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tán
Ngo Trung
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
trieulongweb
 
Chuong 3- CSDL phân tán
Chuong 3- CSDL phân tánChuong 3- CSDL phân tán
Chuong 3- CSDL phân tán
duysu
 
Chuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tánChuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tán
duysu
 

Mais procurados (20)

lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tán
 
Hệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng online
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
 
Chuong 3- CSDL phân tán
Chuong 3- CSDL phân tánChuong 3- CSDL phân tán
Chuong 3- CSDL phân tán
 
Bài 5: Thiết kế giao diện - Giáo trình FPT
Bài 5: Thiết kế giao diện - Giáo trình FPTBài 5: Thiết kế giao diện - Giáo trình FPT
Bài 5: Thiết kế giao diện - Giáo trình FPT
 
csdl-trigger
csdl-triggercsdl-trigger
csdl-trigger
 
Tổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệuTổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệu
 
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịđồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
 
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPTBài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
 
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
 
Tìm hiểu MongoDB
Tìm hiểu MongoDBTìm hiểu MongoDB
Tìm hiểu MongoDB
 
Cursor & Function trong SQL Server
Cursor & Function trong SQL ServerCursor & Function trong SQL Server
Cursor & Function trong SQL Server
 
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Design
 
Chuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tánChuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tán
 
Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm Mô hình hóa dữ liệu mức quan niệm
Mô hình hóa dữ liệu mức quan niệm
 
Phan tich thiet ke he thong thong tin
Phan tich thiet ke he thong thong tinPhan tich thiet ke he thong thong tin
Phan tich thiet ke he thong thong tin
 
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverBài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
 

Semelhante a Bài 5 : Lập trình với CSDL trong SQL

ORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptxORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptx
QuangTrnMinh18
 
Các ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình conCác ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình con
Nhungoc Phamhai
 
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 Ham
Cuong
 
Tóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của cTóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của c
Hồ Lợi
 
Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_in
Huy Nguyễn
 

Semelhante a Bài 5 : Lập trình với CSDL trong SQL (20)

ORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptxORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptx
 
Chuong1 c
Chuong1 c Chuong1 c
Chuong1 c
 
Lec3. Ham.pdf
Lec3. Ham.pdfLec3. Ham.pdf
Lec3. Ham.pdf
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
Thdc 07
Thdc 07Thdc 07
Thdc 07
 
sqlKey
sqlKeysqlKey
sqlKey
 
Phan2 chuong8 chuoikitu
Phan2 chuong8 chuoikituPhan2 chuong8 chuoikitu
Phan2 chuong8 chuoikitu
 
Các ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình conCác ví dụ về cách viết và sử dụng chương trình con
Các ví dụ về cách viết và sử dụng chương trình con
 
slide_Chuong 3_ (1).ppt
slide_Chuong 3_ (1).pptslide_Chuong 3_ (1).ppt
slide_Chuong 3_ (1).ppt
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
 
slide 8051
slide 8051 slide 8051
slide 8051
 
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwwwHQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
 
Nmlt C06 Ham
Nmlt C06 HamNmlt C06 Ham
Nmlt C06 Ham
 
Tóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của cTóm tắt các hàm chuẩn của c
Tóm tắt các hàm chuẩn của c
 
Giới thiệu ngôn ngữ lập trình C++
Giới thiệu ngôn ngữ lập trình C++Giới thiệu ngôn ngữ lập trình C++
Giới thiệu ngôn ngữ lập trình C++
 
Nmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_inNmlt c11 con_trocoban_in
Nmlt c11 con_trocoban_in
 
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNINGOVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
 
Trigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL ServerTrigger, Cursor, Function in SQL Server
Trigger, Cursor, Function in SQL Server
 
Thdc3 Lap Trinh C
Thdc3 Lap Trinh CThdc3 Lap Trinh C
Thdc3 Lap Trinh C
 
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPTBài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
Bài 4: STORED PROCEDURE & GIAO DỊCH - Giáo trình FPT
 

Mais de MasterCode.vn

Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
MasterCode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
MasterCode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
MasterCode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
MasterCode.vn
 

Mais de MasterCode.vn (20)

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vn
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
 

Bài 5 : Lập trình với CSDL trong SQL

  • 1. 11 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C SQL Server
  • 2. 22 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Lập trình v i CSDL 5
  • 3. 33 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Biến cục bộ
  • 4. 44 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Khai báo biến cục bộ • Dùng để l u tr các giá tr t m th i trong quá trình tính toán  Biến phải có kiểu dữ liệu  Biến muốn sử dụng trong một batch phải khai báo trước DECLARE @Tên_biến Kiểu_dữ_liệu [, ...] Ví dụ : DECLARE @Tongsldat INT, @Hotenncc CHAR(50) DECLARE @Ngayxh DATETIME
  • 5. 55 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Gán giá tr cho biến SET @Biến = Giá_trị SET @a = 5 Select @Biến = Tên_Cột From Tên_Bảng Select @ConLai = TonCuoiKy From TonKho Where MaVTu = ‘VT010’ And NamThang = ‘200402’ Sử dụng lệnh SET hoặc SELECT
  • 6. 66 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Xem giá tr hiện hành của biến • Lệnh PRINT Print @Biến Print @A • Khi có kết hợp với chuỗi, phải đổi kiểu dữ liệu sang kiểu chuỗi bằng hàm CAST hay CONVERT Print ‘Giá trị của @A ‘ + cast(@A as char(4))
  • 7. 77 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ph m vi ho t động của biến • Một biến chỉ có ph m vi ho t động cục bộ  Trong một Batch  Trong một Stored Procedure hay Trigger DECLARE @Ngaydhgn DATETIME SELECT @Ngaydhgn=MAX(NGAYDH) FROM DONDH GO PRINT 'Ngày đặt hàng gần nhất: ' + CONVERT(CHAR(12),@Ngaydhgn) GO
  • 8. 88 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Biến hệ thống
  • 9. 99 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ý nghĩa sử dụng • Cung cấp các thông tin hệ thống nh  Phiên bản SQL Server  Số dòng dữ liệu vừa được xử lý bởi câu lệnh  Mã lỗi  Số lượng kết nối  Tình trạng cursor  … • Không cần khai báo  Biến do SQL Server định sẵn  Tên bắt đầu bởi @@
  • 10. 1010 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Một vài biến hệ thống th ng dùng • @@RowCount  Tổng số mẩu tin được tác động của câu lệnh truy vấn gần nhất. • @@Error  Số mã lỗi của câu lệnh thực hiện gần nhất  Khi một câu lệnh thực hiện thành công thì giá trị là 0. • @@Fetch_Status  Trạng thái của việc đọc dữ liệu trong bảng theo cơ chế từng mẩu tin (cursor).  Khi đọc dữ liệu của mẩu tin thành công thì giá trị là 0.
  • 11. 1111 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các toán tử
  • 12. 1212 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Toán tử số h c Ký hiệu Ý nghĩa + Thực hiện phép cộng hai số - Thực hiện phép trừ hai số. * Thực hiện phép nhân hai số. / Thực hiện phép chia hai số. % Thực hiện phép chia lấy phần dư.
  • 13. 1313 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Toán tử nối chuỗi • Sử dụng dấu + làm toán tử nối chuỗi SELECT 'Hello' + ' ' + 'The World!' SELECT 'Ngày đặt hàng D007 là: ' + CAST(NGAYDH AS CHAR(11)) FROM DONDH WHERE SODH='D007'
  • 14. 1414 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Toán tử so sánh Ký hiệu Ý nghĩa = Thực hiện phép so sánh bằng. > Thực hiện phép so sánh lớn hơn. < Thực hiện phép so sánh nhỏ hơn. >= Thực hiện phép so sánh lớn hơn hoặc bằng. <= Thực hiện phép so sánh nhỏ hơn hoặc bằng. <> Thực hiện phép so sánh khác. != Thực hiện phép so sánh khác. !> Thực hiện phép so sánh không lớn hơn. !< Thực hiện phép so sánh không nhỏ hơn.
  • 15. 1515 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Toán tử luận lý • Sử dụng các toán tử thông th ng AND, OR, NOT vẫn dùng trong các câu SQL SELECT * FROM VATTU WHERE (DVTINH='Bộ' AND PHANTRAM>10) OR (DVTINH='Cái' AND PHANTRAM>20)
  • 16. 1616 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cấu trúc điều khiển
  • 17. 1717 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cấu trúc rẽ nhánh IF...ELSE IF Biểu_thức_luận_lý Câu_lệnh1 | Khối_lệnh1 [ ELSE Câu_lệnh2 | Khối_lệnh2 ]
  • 18. 1818 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ví Dụ : IF (SELECT COUNT(*) FROM CTPXUAT WHERE SLXUAT>4) > 0 BEGIN PRINT 'Danh sách các hàng hóa bán với số lượng > 4' SELECT CTPX.MAVTU, TENVTU, SLXUAT FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU=CTPX.MAVTU WHERE SLXUAT>4 END ELSE PRINT 'Chưa bán hàng hóa nào với số lượng >4'
  • 19. 1919 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cú pháp If Exists IF EXISTS (SELECT * FROM CTPXUAT WHERE SLXUAT>4) BEGIN PRINT 'Danh sách các hàng hóa bán với số lượng > 4' SELECT CTPX.MAVTU, TENVTU, SLXUAT FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU=CTPX.MAVTU WHERE SLXUAT>4 END ELSE PRINT 'Chưa bán hàng hóa nào với số lượng >4' IF EXISTS (Câu_lệnh_SELECT) Câu_lệnh1 | Khối_lệnh1 [ ELSE Câu_lệnh2 | Khối_lệnh2 ]
  • 20. 2020 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cấu trúc lặp WHILE DECLARE @Songuyen INT SET @Songuyen=100 WHILE (@Songuyen<110) BEGIN PRINT 'Số nguyên : ' + CONVERT(CHAR(3), @Songuyen) SET @Songuyen = @Songuyen + 1 END WHILE Biểu_thức_luận_lý BEGIN Các_lệnh_lặp END
  • 21. 2121 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Sử dụng biến kiểu d liệu cursor
  • 22. 2222 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Khái niệm về cursor • Các lệnh của SQL Server làm việc trên một nhóm nhiều mẩu tin • Cursor là cấu trúc giúp làm việc v i từng mẩu tin t i một th i điểm  Khai báo cursor như một câu lệnh SELECT  Có thể di chuyển giữa các mẩu tin trong cursor để làm việc  Có thể dùng cursor để cập nhật dữ liệu (Update, Delete)
  • 23. 2323 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cá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  Có hai loại cursor: Local, Global  Cách di chuyển mẩu tin trong cursor: Forward only, scroll  Cách quản lý dữ liệu của cursor: static, dynamic, keyset • Sử dụng lệnh OPEN để mở ra cursor đã định nghĩa trước đó • Đọc và xử lý trên từng dòng dữ liệu bên trong cursor  Sử dụng biến @@Fetch_status  Các lệnh Fetch và cấu trúc while • Đóng cursor lại bằng lệnh CLOSE và DEALLOCATE  Sau khi close, có thể mở lại  Deallocate: hủy cursor khỏi bộ nhớ
  • 24. 2424 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cú pháp Declare DECLARE Tên_cursor CURSOR [LOCAL | GLOBAL] [FORWARD_ONLY | SCROLL] [STATIC | DYNAMIC | KEYSET] [READ_ONLY | SCROLL_LOCK] FOR Câu_lệnh_SELECT [FOR UPDATE [OF Danh_sách_cột_cập_nhật]] DECLARE cur_Vattu CURSOR DYNAMIC FOR SELECT * FROM VATTU
  • 25. 2525 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cú pháp Open OPEN Tên_cursor DECLARE cur_Vattu CURSOR DYNAMIC FOR SELECT * FROM VATTU OPEN cur_Vattu
  • 26. 2626 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cú pháp FETCH FETCH [NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n] FROM Tên_cursor [INTO Danh_sách_biến]  Absolute n: Đọc dòng thứ n trong cursor  Relative n: Đọc dòng thứ n kể từ vị trí hiện hành
  • 27. 2727 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ví dụ hoàn chỉnh --1. Khai báo biến cursor DECLARE cur_Vattu CURSOR KEYSET FOR SELECT * FROM VATTU WHERE MAVTU LIKE 'TV%' ORDER BY MAVTU --2. Mở cursor OPEN cur_Vattu --3. Đọc dữ liệu FETCH NEXT FROM cur_Vattu WHILE @@FETCH_STATUS = 0 BEGIN -- Xử lý dòng mới vừa đọc được -- Thực hiện đọc tiếp các dòng kế FETCH NEXT FROM cur_Vattu END --4. Đóng cursor CLOSE cur_Vattu DEALLOCATE cur_Vattu
  • 28. 2828 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm th ng dùng
  • 29. 2929 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm chuyển đổi kiểu d liệu Một hàm của SQL Server có thể sử dụng ở bất cứ đâu thay cho một giá trị cụ thể • Đổi một số thành chuỗi  STR (Số_thực, Số_ký_tự [, Số_lẻ]) • Đổi kiểu dữ liệu  CAST (Biểu_thức AS Kiểu_dữ_liệu) • Đổi kiểu dữ liệu và định dạng  CONVERT (Kiểu_dữ_liệu, Biểu_thức [, Định_dạng])
  • 30. 3030 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Một số đ nh d ng chuỗi ngày thông dụng yy yyyy Chuỗi kết quả - 0 hoặc 100 mon dd yyyy hh:miAM (or PM) 1 101 mm/dd/yyyy 2 102 yy.mm.dd 3 103 dd/mm/yy 5 105 dd-mm-yy 6 106 dd mon yy 8 108 hh:mm:ss 9 109 mon dd yyyy hh:mi:ss:mmmAM (or PM) 10 110 mm-dd-yy 11 111 yy/mm/dd 12 112 yymmdd … Print convert(nvarchar(50), getdate(), 5) 23-05-09 Print convert(nvarchar(50), getdate(), 105) 23-05-2009
  • 31. 3131 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm ngày gi • Cộng ngày  DATEADD (Đơn_vị, Con_số, Ngày_chỉ_định) • So sánh hai biến ngày  DATEDIFF (Đơn_vị, Ngày1, Ngày2) • Lấy tên ngày, tháng, năm  DATENAME (Đơn_vị, Ngày) • Thời điểm hiện hành  GETDATE() • Lấy một thành phần ngày, giờ trong biến ngày  DATEPART (Đơn_vị, Ngày) • Lấy ngày, tháng, năm của biến ngày  DAY (Ngày)  MONTH (Ngày)  YEAR (Ngày)
  • 32. 3232 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Đơn_v (Thành phần của ngày) Ch viết tắt year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw hour hh minute mi, n second ss, s millisecond ms
  • 33. 3333 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm toán h c • Lấy trị tuyệt đối  ABS (Biểu_thức_số) • Hằng số Pi  PI() • Luỹ thừa  POWER (Biểu_thức_số, Số_mũ) • Lấy số ngẫu nhiên  RAND ([Số_nguồn]) • Làm tròn số  ROUND (Biểu_thức_số, Vtrí_làm_tròn) • Dấu của kết quả biểu thức : SIGN (Biểu_thức_số) • Lấy căn bậc 2 : SQRT (Biểu_thức_số)
  • 34. 3434 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm xử lý chuỗi • Hàm viết hoa, th ng  UPPER (Chuỗi), LOWER (Chuỗi) • Hàm cắt chuỗi  LEFT (Chuỗi nguồn, Số_ktự), RIGHT (Chuỗi nguồn, Số_ktự)  SUBSTRING (Chuỗi nguồn,Vị_trí,Số_ktự) • Hàm cắt khoảng trắng, t o chuỗi khoảng trắng  LTRIM (Chuỗi), RTRIM (Chuỗi), SPACE (N) • Hàm t o chuỗi lặp  REPLICATE (Chuỗi_lặp, N) • Chiều dài chuỗi  LEN (Chuỗi) • Đảo chuỗi  REVERSE (Chuỗi) • Tìm và thay thế chuỗi  REPLACE (Chuỗi nguồn, Chuỗi_tìm, Chuỗi_thay_thế) • Đổi từ số thành ký t và ng ợc l i  CHAR (Số) , ASCII(Ký_tự)
  • 35. 3535 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Xử lý lỗi
  • 36. 3636 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Khố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 : BEGIN TRY { các câu lệnh } END TRY BEGIN CATCH { các câu lệnh} END CATCH • Các điểm cần lưu ý : • TRY và CATCH phải cùng lô xử lý • Sau khối TRY phải là khối CATCH • Có thể lồng nhiều cấp
  • 37. 3737 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Khối lệnh TRY…CATCH Ví dụ : BEGIN TRY SELECT * FROM BangKhongTonTai; END TRY BEGIN CATCH SELECT ERROR_NUMBER() as ErrorNumber, ERROR_MESSAGE() as ErrorMessage; END CATCH
  • 38. 3838 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Một số hàm ERROR th ng dùng ERROR_NUMBER() : Trả về mã số của lỗi ERROR_MESSAGE() Trả về chuỗi lỗi ERROR_SEVERITY() returns the error severity. ERROR_STATE() returns the error state number. ERROR_LINE() : Trả về dòng gây ra lỗi ERROR_PROCEDURE() Trả về tên thủ tục/ trigger gây ra lỗi
  • 39. 3939 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Thủ tục RAISERROR • Ý nghĩa : Trả thông báo lỗi về cho ứng dụng • Cú pháp : • Raiserror(tbao_loi, muc_do, trang_thai [, cac_tham_so] ) Trong đó: tbao_loi : - 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 lớn hơn 50000. - chuỗi thông báo lỗi bất kỳ. muc_do : Số có giá trị từ 025 thể hiện mức độ nghiêm trọng của lỗi. trang_thai : Số từ 1-127 để xác định vị trí lỗi khi sử dụng cùng một tbao_loi tại nhiều điểm khác nhau cac_tham_so : Hỗ trợ cho các tbao_loi cần tham số
  • 40. 4040 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ví dụ sử dụng RAISERROR … IF @nPhanTram NOT BETWEEN 0 AND 100 BEGIN SET @sErrMsg = N‘Tỉ lệ phầm trăm phải nằm trong đoạn [0,100]’ RAISERROR(@sErrMsg, 16, 1) RETURN END … Msg 50000, Level 16, State 1, Line 6 Tỉ lệ phầm trăm phải nằm trong đoạn [0,100]