
Bài 7: HÀM DO NGƯỜI DÙNG ĐỊNH NGHĨA
Hàm do người dùng định nghĩa về mặc nào đó thì nó
giống như thủ tục ở bài trước ta đã tìm hiểu (gồm các câu
lệnh SQL kết hợp lại).Nhưng hàm trả lại kết quả thông
qua tên hàm còn thủ tục thì không chính vì vậy mà trong
thủ tục có tham số OUTPUT để lấy kết quả trả về.
CREATE FUNCTION [tên chủ sở hữu.]tên_hàm
([danh_sách_tham_số (gán giá trịdefaut nếu cấn)])
RETURNS (kiểu_trả_về_của_hàm)
AS
BEGIN
các_câu_lệnh_của_hàm
END

Bài 7: HÀM DO NGƯỜI DÙNG ĐỊNH
NGHĨA
Hàm trả về bảng dữ liệu
Nhìn chung là giống View table nhưng được truyền tham
số theo ý muốn
CREATE FUNCTION tên_hàm([danh_sách_tham_số])
RETURNS TABLE
AS
1câu RETURN (1 câu lệnh_select)
Chú ý: Trong phần thân của hàm chỉ có duy nhất một câu lệnh
RETURN xác định giá trị trả về của hàm thông qua duy nhất một
câu lệnh SELECT. Ngoài ra, không sử dụng bất kỳ câu lệnh nào
khác trong phần thân của hàm.

Bài 7: HÀM DO NGƯỜI DÙNG ĐỊNH
NGHĨA
*Tạo view
CREATE VIEW sinhvien_k25
AS
SELECT masv,hodem,ten,ngaysinh
FROM sinhvien INNER JOIN lop
ON sinhvien.malop=lop.malop
WHERE khoa=25
*Thực thi view SELECT * FROM sinhvien_K25

Bài 7: HÀM DO NGƯỜI DÙNG ĐỊNH
NGHĨA
*Tạo hàm
CREATE FUNCTION funcXemSV(@khoa SMALLINT)
RETURNS TABLE
AS
RETURN(SELECT masv,hodem,ten,ngaysinh
FROM sinhvien INNER JOIN lop
ON sinhvien.malop=lop.malop
WHERE khoa=@khoa)
*Thực thi hàm SELECT * FROM funcXemSV(25)

Bài 7: HÀM DO NGƯỜI DÙNG ĐỊNH
NGHĨA
Trong trường hợp cần phải sử dụng đến nhiều câu lệnh
trong phần thân của hàm, ta sử dụng cú pháp như sau để
định nghĩa hàm:
CREATE FUNCTION tên_hàm([danh_sách_tham_số])
RETURNS @biến_bảng TABLE định_nghĩa_bảng
AS
BEGIN
các_câu_lệnh_trong_thân_hàm
RETURN
END

