hệ quản trị csdl sql server - chương 9 function

14 783 0
hệ quản trị csdl sql server - chương 9 function

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 9: FUNCTION Giáo viên: Tạ Thúc Nhu Khoa CNTT trường ĐH Lạc Hồng HỆ QUẢN TRỊ CSDL SQL SERVER Mã hó a 2 I-Khái niệm: I-Khái niệm: Hàm là đối tượng cơ sở dữ liệu tương tự như thủ tục. Điểm khác biệt giữa hàm vàthủ tục là: • Hàm trả về một giátrị vô hướng (scalar value) hoặc một bảng dữ liệu. Điều này cho phép ta sử dụng hàm trong biểu thức hoặc trong mệnh đề FROM. • Hàm không cótham số Output. Mã hó a 3 II-Tạo hàm trả về giátrị vô hướng (Scalar): II-Tạo hàm trả về giátrị vô hướng (Scalar): CREATEFUNCTION tên_hàm ([danh_sách_tham_số]) RETURNS <kiểu dữ liệu trả về của hàm> AS BEGIN Các_câu_lệnh_của_hàm RETURN [<giá_trị>] END • Hàm không trả về giátrị kiểu timestamp. Mã hó a 4 Vídụ: hàm trả về thứ trong tuần Vídụ: hàm trả về thứ trong tuần CREATEFUNCTION func_Thu(@ngay DATETIME) RETURNS NVARCHAR(10) AS BEGIN DECLARE @S NVARCHAR(10) SELECT @S= CASE DATEPART(DW,@ngay) WHEN 1 THEN N'Chủ nhật' WHEN 2 THEN N'Thứ hai' WHEN 3 THEN N'Thứ ba' WHEN 4 THEN N'Thứ tư' WHEN 5 THEN N'Thứ năm' WHEN 6 THEN N'Thứ sáu' ELSE N'Thứ bảy' END RETURN @S /* Trị trả về của hàm */ END Mã hó a 5 Gọi thực hiện hàm Scalar Gọi thực hiện hàm Scalar • Trước tên hàm ta phải chỉ định thêm dbo (database owner). Vídụ: -Gọi hàm trong phát biểu Select SELECT SoHD, dbo.func_Thu(NGAYHD)+ ', ' + Convert(VarChar,NgayHD,103) FROM HoaDon -Gọi hàm trong phát biểu EXEC DECLARE @Thu int Exec @Thu = dbo.func_Thu ‘5/15/2009’ Print @Thu Mã hó a 6 III-Tạo hàm trả về một bảng dữ liệu III-Tạo hàm trả về một bảng dữ liệu • Có2 loại hàm trả về một bảng dữ liệu: –Hàm nội tuyến (Inline table-valued functions) –Hàm nhiều phát biểu (Multistatement table-valued functions) • Hàm trả về bảng dữ liệu cóthể được sử dụng trong mệnh đề FROM. • Khi gọi hàm trả về bảng dữ liệu không cần chỉ định tên người dùng như hàm Scalar Mã hó a 7 1-Tạo hàm nội tuyến: (Inline table-valued functions) 1-Tạo hàm nội tuyến: (Inline table-valued functions) CREATEFUNCTION tên_hàm ([danh_sách_tham_số]) RETURNS TABLE AS RETURN (câu_lệnh_select) Mã hó a 8 Vídụ: Hàm trả về bảng chứa MaMH, số lượng mỗi mặt hàng đã bán từ một ngày Vídụ: Hàm trả về bảng chứa MaMH, số lượng mỗi mặt hàng đã bán từ một ngày CREATEFUNCTION func_banhang(@Ngay DateTime) RETURNS TABLE AS RETURN(SELECT MaMH, SUM(ISNULL(SL,0)) AS TongSL FROM CTHD Inner Join HoaDon hd On CTHD.SoHD=hd.SoHD Where NgayHD >= @Ngay GROUP BY MaMH ) Mã hó a 9 Sử dụng hàm đã định nghĩa để tính số tồn ở đầu một tháng nào đó: Sử dụng hàm đã định nghĩa để tính số tồn ở đầu một tháng nào đó: SELECT a.MaMH, a.TenMH, SoTon -TongSL FROM MatHang a INNER JOIN func_banhang('2007/5/1') b ON a.MaMH=b.MaMH Mã hó a 10 2-Hàm nhiều phát biểu: (Multistatement table-valued functions) 2-Hàm nhiều phát biểu: (Multistatement table-valued functions) CREATEFUNCTION tên_hàm([danh_sách_tham_số]) RETURNS @biến_bảng TABLE (cấu_trúc_ bảng) AS BEGIN các_câu_lệnh_trong_thân_hàm RETURN END Vídụ: Xây dựng hàm tạo bảng chứa số mặt hàng trong từng loại hàng nếu MaLH=0, ngược lại chỉ hiển thị số mặt hàng của loại hàng đã chỉ định. [...]... giá trị mặc định của tham số: SELECT * FROM func_TongSV(DEFAULT) Cho ta biết tổng số mặt hàng hiện có của mỗi loại hàng 12 Mã hóa V- Sửa Xóa Hàm: 1 Đổi Tên hàm: sp_Rename , 2 Xóa hàm: DROP FUNCTION 3 Thay đổi nội dung hàm: ALTER FUNCTION func_Name ([danh_sách_tham_số]) RETURNS AS BEGIN Các_câu_lệnh_của_hàm RETURN [ ] END 13 Mã hóa V- Xem...Ví dụ: CREATE FUNCTION Func_TongMH(@MaLH SMALLINT = 0) RETURNS @bangthongke TABLE (MaLH NVARCHAR(5), TenLH NVARCHAR(50), TongSoMH INT ) AS BEGIN IF @MaLH=0 INSERT @bangthongke SELECT lh.MaLH,TenLH,COUNT(*) FROM LoaiHang... ALTER FUNCTION func_Name ([danh_sách_tham_số]) RETURNS AS BEGIN Các_câu_lệnh_của_hàm RETURN [ ] END 13 Mã hóa V- Xem Thông Tin Hàm: 1 Liệt kê danh sách hàm trong CSDL hiện hành: Select * From Sys.Objects Where Type In (‘FN’, 'IF', 'TF') 2 Liệt kê danh sách tham số của thủ tục: Select * From sys.Parameters Where Object_ID= Object_ID(' func_Thu‘) 3 Xem nội dung thủ . Chương 9: FUNCTION Giáo viên: Tạ Thúc Nhu Khoa CNTT trường ĐH Lạc Hồng HỆ QUẢN TRỊ CSDL SQL SERVER Mã hó a 2 I-Khái niệm: I-Khái niệm: Hàm là đối tượng cơ sở. tên người dùng như hàm Scalar Mã hó a 7 1-Tạo hàm nội tuyến: (Inline table-valued functions) 1-Tạo hàm nội tuyến: (Inline table-valued functions) CREATEFUNCTION tên_hàm ([danh_sách_tham_số]). ON a.MaMH=b.MaMH Mã hó a 10 2-Hàm nhiều phát biểu: (Multistatement table-valued functions) 2-Hàm nhiều phát biểu: (Multistatement table-valued functions) CREATEFUNCTION tên_hàm([danh_sách_tham_số])

Ngày đăng: 06/07/2014, 04:16

Tài liệu cùng người dùng

Tài liệu liên quan