intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 8 - Lê Thị Minh Nguyện

Chia sẻ: Phong Phong | Ngày: | Loại File: PDF | Số trang:5

72
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 8 do Lê Thị Minh Nguyện biên soạn nhằm mục đích phục vụ cho việc giảng dạy. Nội dung bài giảng gồm: Khái niệm, các loại Function, hàm Scalar, hàm Inline table valued, hàm Multi statement table valued,...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 8 - Lê Thị Minh Nguyện

8/25/2017<br /> <br /> Nội dung<br /> 1. Khái niệm<br /> <br /> Chương 8.<br /> Hàm (Function)<br /> <br /> 2. Các loại Function<br /> 3. Hàm Scalar<br /> 4. Hàm Inline table valued<br /> <br /> GV: Lê Thị Minh Nguyện<br /> Email: nguyenltm@huflit.edu.vn<br /> <br /> 5. Hàm Multi statement table valued<br /> 6. Nhận xét<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 1. Khái niệm<br /> <br /> 2. Các loại Function<br /> <br /> • Cũng giống như Stored Procedure Hàm là một đối tượng<br /> trong cơ sở dữ liệu bao gồm một tập nhiều câu lệnh SQL<br /> được nhóm lại với nhau thành một nhóm.<br /> • Điểm khác biệt giữa hàm và thủ tục là hàm trả về một giá trị<br /> thông qua tên hàm. Điều này cho phép ta sử dụng hàm như là<br /> một thành phần của một biểu thức chẳng hạn như trong các<br /> câu lệnh truy vấn hay các câu lệnh thực hiện cập nhật dữ liệu<br /> <br /> • Loại 1: Hàm được định nghĩa sẵn trong DBMS<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 3<br /> <br /> 2<br /> <br /> • Loại 2: Hàm do người dùng định nghĩa<br /> • Giá trị trả về là “dữ liệu kiểu bảng”<br /> • Giá trị trả về là một giá trị – Scalar-valued<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 4<br /> <br /> 1<br /> <br /> 8/25/2017<br /> <br /> 3. Hàm Scalar<br /> <br /> 3. Hàm Scalar (tt)<br /> CREATE FUNCTION Test_function(@b int, @c int)<br /> <br /> Hàm vô hướng trả về duy nhất một giá trị dựa trên tham số<br /> truyền vào.<br /> Cú pháp<br /> <br /> RETURNS<br /> <br /> AS<br /> <br /> declare @kq int<br /> if @b>2<br /> <br /> CREATE FUNCTION func_name ([Danh_Sach_Cac_Tham_So])<br /> RETURNS<br /> Kieu_Du_Lieu_Tra_Ve_Cua_Ham<br /> AS<br /> BEGIN<br /> các_câu_lenh_của_hàm<br /> END<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> int<br /> <br /> BEGIN<br /> <br /> set @kq=@b+@c<br /> <br /> else<br /> set @kq=@b+@c+1<br /> return @kq<br /> END<br /> <br /> SELECT<br /> <br /> dbo. Test_function(3,4)<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 6<br /> <br /> 3. Hàm Scalar (tt)<br /> <br /> 3. Hàm Scalar(tt)<br /> <br /> CREATE<br /> FUNCTION GiaiThua(@x int)<br /> RETURNS<br /> int AS<br /> Begin<br /> Declare @i int<br /> If @x>20 OR @x IS NULL<br /> Set @i = NULL<br /> Else<br /> If @x < 2<br /> Set @i = @x<br /> Else<br /> Set @i = @x * dbo.GiaiThua(@x-1)<br /> Return @i<br /> End<br /> <br /> CREATE FUNCTION f_thu (@ngay datetime)<br /> returns nvarchar(10)<br /> As<br /> Begin<br /> declare @st nvarchar(10)<br /> select @st=case datepart(dw,@ngay)<br /> when 1 then N'chủ nhật'<br /> when 2 then N'thứ hai’<br /> when 3 then N 'thứ ba’<br /> when 4 then N 'thứ tư’<br /> when 5 then N 'thứ năm’<br /> when 6 then N 'thứ sáu’<br /> else N 'thứ bảy’<br /> End<br /> Return @st<br /> Hệ quản trị Cơ sở dữ liệu<br /> End<br /> <br /> 8<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 5<br /> <br /> Gọi hàm<br /> <br /> SELECT<br /> <br /> dbo.GiaiThua(3)<br /> <br /> 7<br /> <br /> 2<br /> <br /> 8/25/2017<br /> <br /> 3. Hàm Scalar (tt)<br /> <br /> 4. Hàm Inline table valued<br /> Hàm nội tuyến, trả về dạng bảng.<br /> Cú pháp:<br /> <br /> Thực thi hàm:<br /> Select MaNV, TenNV, dbo.f_thu (NgayVaoLam)<br /> From NhanVien<br /> Kết qủa:<br /> <br /> CREATE FUNCTION func_name ([Danh_Sach_Cac_Tham_So])<br /> RETURNS TABLE<br /> AS<br /> RETURN (câu_lenh_select)<br /> • Kiểu trả về của hàm phải được chỉ định bởi mệnh đề RETURNS TABLE<br /> • Trong phần thân của hàm chỉ có duy nhất một câu lệnh RETURN<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 9<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 10<br /> <br /> 4. Hàm Inline table valued (tt)<br /> <br /> 4. Hàm Inline table valued (tt)<br /> <br /> Hàm nội tuyến, trả về dạng bảng.<br /> Cú pháp:<br /> <br /> Tạo hàm trả về các khách hàng tùy thuộc vào giá trị mã<br /> khách hàng truyền vào cho tham số<br /> CREATE FUNCTION f_KhachHang (@MaKH int)<br /> RETURNS TABLE<br /> AS<br /> RETURN (Select *<br /> From KhachHang<br /> Where MaKH > @MaKH)<br /> <br /> CREATE FUNCTION func_name ([Danh_Sach_Cac_Tham_So])<br /> RETURNS TABLE<br /> AS<br /> RETURN (câu_lenh_select)<br /> • Kiểu trả về của hàm phải được chỉ định bởi mệnh đề RETURNS TABLE<br /> • Trong phần thân của hàm chỉ có duy nhất một câu lệnh RETURN<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 11<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 12<br /> <br /> 3<br /> <br /> 8/25/2017<br /> <br /> 5. Hàm Multi statement table valued<br /> <br /> 4. Hàm Inline table valued (tt)<br /> <br /> Hàm gồm nhiều câu lệnh SQL bên trong, trả vê dạng bảng.<br /> Cú pháp:<br /> CREATE FUNCTION func_name ([Danh_Sach_Cac_Tham_So]) RETURNS<br /> @biến_bảng TABLE định_nghia_bảng<br /> AS<br /> BEGIN các_câu_lenh_trong_thân_hàm<br /> RETURN<br /> END<br /> Lưu ý: sau từ khóa RETURNS là một biến bảng được định nghĩa và sau từ<br /> khóa RETURN cuối hàm không có tham sô nào đi kèm<br /> <br /> Thực thi hàm:<br /> SELECT tmp.TenKH, dh.NgayDatHang<br /> FROM DonHang dh, dbo.f_KhachHang(3) as tmp<br /> WHERE dh.MaKH = tmp.MaKH<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 13<br /> <br /> 5. Hàm Multi statement table valued (tt)<br /> <br /> 14<br /> <br /> 5. Hàm Multi statement table valued (tt)<br /> CREATE FUNCTION f_DSKhachHang (@MaKH int)<br /> RETURNS @myKhachHang table (MaKH int, TenKH nvarchar(50),<br /> NgayDatHang datetime) AS<br /> Begin<br /> --Else<br /> Insert into @myKhachHang<br /> Select kh.MaKH, kh.TenKH, dh.NgayDatHang<br /> From KhachHang kh, DonHang dh<br /> Where kh.MaKH=dh.MaKH and kh.MaKH = @MaKH<br /> Return<br /> End<br /> <br /> CREATE FUNCTION f_DSKhachHang (@MaKH int)<br /> RETURNS @myKhachHang table (MaKH int, TenKH nvarchar(50),<br /> NgayDatHang datetime) AS<br /> Begin<br /> If @MaKH = 0<br /> Insert into @myKhachHang<br /> Select kh.MaKH, kh.TenKH, dh.NgayDatHang<br /> From KhachHang kh, DonHang dh<br /> Where dh.MaKH = kh.MaKH<br /> --15<br /> <br /> 16<br /> <br /> 4<br /> <br /> 8/25/2017<br /> <br /> 5. Hàm Multi statement table valued (tt)<br /> Thực thi hàm:<br /> Select<br /> *<br /> From<br /> f_DSKhachHang (0)<br /> <br /> 17<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 18<br /> <br /> 5<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2