1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

5 45 0

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

THÔNG TIN TÀI LIỆU

Nội dung

• Kiểu trả về của hàm phải được chỉ định bởi mệnh đề RETURNS TABLE • Trong phần thân của hàm chỉ có duy nhất một câu lệnh RETURN. Hàm Inline table valued (tt)[r]

(1)

Ch

ư

ơng 8.

Hàm (Function)

GV: Lê Thị Minh Nguyện Email: nguyenltm@huflit.edu.vn

Nội dung

1 Khái niệm

2 Các loại Function

3 Hàm Scalar

4 Hàm Inline table valued

5 Hàm Multi statement table valued

6 Nhận xét

Hệ quản trị Cơsở liệu

1 Khái niệm

Cũng giống như

Stored Procedure

Hàm đối tượng

trong sở liệu bao gồm tập nhiều câu lệnh SQL

được nhóm lại với thành nhóm.

Điểm khác biệt hàm thủ tục hàm trả giá trị

thông qua tên hàm Điều cho phép ta sử dụng hàm là

một thành phần biểu thức chẳng hạn các

câu lệnh truy vấn hay câu lệnh thực cập nhật liệu

Hệ quản trị Cơsở liệu

2 Các loại Function

Loại 1: Hàm định nghĩa sẵn DBMS

Loại 2: Hàm người dùng định nghĩa

Giá trị trả “dữ liệu kiểu bảng”Giá trị trả giá trị– Scalar-valued

(2)

3 Hàm Scalar

Hệ quản trị Cơsở liệu

Hàm vô hướng trả giá trị dựa tham số

truyền vào

Cú pháp

CREATE FUNCTION func_name([Danh_Sach_Cac_Tham_So]) RETURNS Kieu_Du_Lieu_Tra_Ve_Cua_Ham

AS BEGIN

các_câu_lenh_của_hàm END

3 Hàm Scalar (tt)

Hệ quản trị Cơsở liệu CREATE FUNCTION Test_function(@b int, @c int)

RETURNS int AS BEGIN

declare @kq int if @b>2 set @kq=@b+@c else set @kq=@b+@c+1 return @kq END Gọi hàm

SELECT dbo.Test_function(3,4)

3 Hàm Scalar (tt)

Hệ quản trị Cơsở liệu CREATE FUNCTION GiaiThua(@x int)

RETURNS int AS Begin

Declare @i int

If @x>20 OR @x IS NULL Set @i = NULL Else

If @x < Set @i = @x Else

Set @i = @x * dbo.GiaiThua(@x-1) Return @i

End

SELECT dbo.GiaiThua(3)

3 Hàm Scalar(tt)

Hệ quản trị Cơsở liệu CREATE FUNCTIONf_thu(@ngay datetime)

returns nvarchar(10) As Begin

declare @st nvarchar(10)

select @st=case datepart(dw,@ngay) when then N'chủ nhật' when then N'thứ hai’ when then N 'thứ ba’ when then N 'thứ tư’ when then N 'thứ năm’ when then N 'thứ sáu’ else N 'thứ bảy’ End

(3)

3 Hàm Scalar (tt)

Hệ quản trị Cơsở liệu Thực thi hàm:

Select MaNV, TenNV, dbo.f_thu (NgayVaoLam)

From NhanVien Kết qủa:

4 Hàm Inline table valued

Hàm nội tuyến, trả dạng bảng

Cú pháp:

CREATE FUNCTION func_name([Danh_Sach_Cac_Tham_So]) RETURNS TABLE

AS

RETURN (câu_lenh_select)

Hệ quản trị Cơsở liệu 10

• Kiểu trả hàm phải định mệnh đềRETURNS TABLE • Trong phần thân hàm có câu lệnh RETURN

4 Hàm Inline table valued (tt)

Hàm nội tuyến, trả dạng bảng

Cú pháp:

CREATE FUNCTION func_name([Danh_Sach_Cac_Tham_So]) RETURNS TABLE

AS

RETURN (câu_lenh_select)

Hệ quản trị Cơsở liệu 11

• Kiểu trả hàm phải định mệnh đềRETURNS TABLE • Trong phần thân hàm có câu lệnh RETURN

4 Hàm Inline table valued (tt)

Hệ quản trị Cơsở liệu 12

Tạo hàm trả khách hàng tùy thuộc vào giá trị mã

khách hàng truyền vào cho tham số

CREATE FUNCTION

f_KhachHang

(@MaKH int)

RETURNS TABLE

AS

RETURN (Select *

(4)

4 Hàm Inline table valued (tt)

Hệ quản trị Cơsở liệu 13

Thực thi hàm:

SELECT tmp.TenKH, dh.NgayDatHang

FROM DonHang dh, dbo.f_KhachHang(3) as tmp WHERE dh.MaKH = tmp.MaKH

5 Hàm Multi statement table valued

14 Hàm gồm nhiều câu lệnh SQL bên trong, trả vê dạng bảng

Cú pháp:

CREATE FUNCTION func_name([Danh_Sach_Cac_Tham_So]) RETURNS @biến_bảng TABLE định_nghia_bảng

AS

BEGIN các_câu_lenh_trong_thân_hàm RETURN

END

Lưu ý: sau từkhóa RETURNS biến bảng định nghĩa sau từ

khóa RETURN cuối hàm khơng có tham sơ kèm

15 CREATE FUNCTION f_DSKhachHang(@MaKH int)

RETURNS @myKhachHangtable(MaKH int, TenKH nvarchar(50), NgayDatHang datetime) AS

Begin

If @MaKH =

Insert into @myKhachHang

Select kh.MaKH, kh.TenKH, dh.NgayDatHang From KhachHang kh, DonHang dh

Where dh.MaKH = kh.MaKH

-5 Hàm Multi statement table valued (tt)

16 CREATE FUNCTION f_DSKhachHang(@MaKH int)

RETURNS @myKhachHang table (MaKH int, TenKH nvarchar(50), NgayDatHang datetime) AS Begin

-Else

Insert into @myKhachHang

Select kh.MaKH, kh.TenKH, dh.NgayDatHang From KhachHang kh, DonHang dh

Where kh.MaKH=dh.MaKH and kh.MaKH = @MaKH Return

End

(5)

17

Thực thi hàm:

Select

*

From

f_DSKhachHang (0)

5 Hàm Multi statement table valued (tt)

Stored Procedure

Ngày đăng: 30/03/2021, 04:29

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w