BÀI TẬP VỀ FUNCTION TRONG SQL

     

Đôi lúc họ muốn tự sinh sản một hàm riêng biệt cho hệ thống để dễ mở rộng và tái sử dụng, vào SQL cũng hỗ trợ họ thực hiện các bước này. Nội dung bài viết này bản thân xin share một số kiến thức về Function (Hàm) trong MS SQL Server.

Bạn đang xem: Bài tập về function trong sql

Function là gì?

Định nghĩa:

Là một đối tượng trong cơ sở tài liệu (CSDL) sử dụng trong số câu lệnh SQL, được biên dịch sẵn với lưu vào CSDL nhằm mục đích triển khai xử lý nào kia như giám sát và đo lường phức tạp và trả về công dụng là cực hiếm nào đó.

Đặc điểm:Luôn trả về giá chỉ trịGồm 2 loại: Function khối hệ thống và Function do người dùng tự định nghĩaFunction người tiêu dùng tự định nghĩa tất cả 2 loại:Scalar-valued: Trả về cực hiếm vô hướng của các kiểu tài liệu T-SQLTable-valued: Trả về bảng, là công dụng của một hoặc những lệnh

Cách định nghĩa Function

1. Chế tác Function trả về giá chỉ trị các loại Scalar-valued

CREATE FUNCTION thương hiệu function>(<
tên tham số> hình dạng dữ liệu> <= giá trị mặc định>>, …,<...>>)RETURNS hình dáng dữ liệu>BEGIN RETURN Biểu thức cực hiếm đơn>ENDTrong đó:

Tên function: tên của hàm họ sẽ tạoTên tham số: Là những tham số Input mang đến hàm. Khai báo báo gồm tên của tham số (trước tên tham số sử dụng tiền tố
), kiểu tài liệu của tham số, bạn có thể chỉ định giá trị mặc định cho tham số. Có thể chỉ định các tham số đầu vàoRETURNS: tự khóa này hướng đẫn kiểu tài liệu hàm vẫn trả về. Kiểu tài liệu phải được chỉ định và hướng dẫn kiểu độ lâu năm dữ liệu. Ví dụ: varchar(100)WITH ENCRYPTION: từ khóa hướng dẫn và chỉ định code của hàm sẽ tiến hành mã hóa trong bảng syscomments.AS: trường đoản cú khóa cho thấy code của hàm bắt đầu.BEGIN: Đi cùng với END để chế tạo thành bao khối bao những câu lệnh trong thân hàm.RETURN: tự khóa này đã gửi quý giá tới thủ tục gọi hàm.Một số lưu ý:Tên function phải là duy nhất trong 1 CSDL. Function được tạo/định nghĩa trong database nào thì chỉ thực hiện trong csdl đó. Khác với Function tất cả sẵn của SQL được truy vấn ở bất cứ đâu.Danh sách tham số về tối đa 1024 tham số.

2. Sinh sản Function trả về giá trị loại Table-valued

Function Table-valued bao gồm 2 loại:

Hàm giá trị bảng đối kháng giản: Trả về bảng, là công dụng của một câu lệnh SELECT đơnHàm quý hiếm bảng nhiều câu lệnh: Trả về bảng, là tác dụng của những câu lệnha) Hàm quý giá bảng đối chọi giản

CREATE FUNCTION thương hiệu function>(<
tên tham số> đẳng cấp dữ liệu> <= cực hiếm mặc định>>, …,<...>>)RETURNS TABLE RETURN Câu lệnh SQL>ENDLưu ý Hàm giá trị bảng đơn còn được gọi là hàm giá trị bảng nội tuyến. Hoàn toàn có thể được cần sử dụng trong câu lệnh truy hỏi vấn sửa chữa thay thế cho thương hiệu bảng hoặc tên View.

b) Hàm cực hiếm bảng nhiều câu lệnh

CREATE FUNCTION tên function>(<
tên biến đổi trả về> TABLE (tên cột 1> mẫu mã dữ liệu> , ..., thương hiệu cột n> vẻ bên ngoài dữ liệu> )BEGIN Câu lệnh SQL>RETURNEND

Thay đổi, xóa, xem câu chữ Function

1. Biến đổi Function

Để biến hóa các hàm vẫn khai báo ta sử dụng câu lệnh ALTER FUNCTION. Cú pháp giống như như tạo bắt đầu Function, chỉ vắt từ khóa CREATE bằng từ khóa ALTER

ALTER FUNCTION thương hiệu function>(<
tên tham số> hình trạng dữ liệu> <= quý hiếm mặc định>>, …,<...>>)RETURNS thứ hạng dữ liệu> | TABLEBEGIN RETURN Biểu thức quý hiếm đơn> | Câu lệnh SQLEND

2. Xóa Function

Để xóa hàm ta sử dụng câu lệnh DROP FUNCTION.

Xem thêm: Xóa Chữ Chìm Trong Word 2013, Cách Xóa Chữ Chìm Trong Bản Word

DROP FUNCTION tên function>

3. Xem nội dung Function

Để xem nội dung function ta áp dụng Store Procedure (Thủ tục) tất cả sẵn của SQL là sp_helptext (Transact-SQL)

EXEC sp_helptext "FunctionName"

Ví dụ ráng thể

Cho bài bác toán quản lý Vay có thế chấp tài sản đơn giản thể hiện qua sơ trang bị mức đồ gia dụng lý như sau:
*

Ví dụ 1. sinh sản function cho biết số lượng khách hàng theo địa chỉ cửa hàng bất kỳ nhấn vào từ thông số với đk là quý khách hàng có tổng số tiền vay trường đoản cú trước đến thời điểm này từ 200 triệu trở lên.

Cách 1: Trả về cực hiếm vô hướng

CREATE FUNCTION count_customer_with_address (
count = count(*) FROM ( SELECT Vay.MaKH FROM Vay,KhachHang WHERE Vay.MaKH=KhachHang.MaKH và KhachHang.DiaChi=
countENDGọi thực thi function:

PRINT dbo.count_customer_with_address("Ha Noi")Cách 2: Trả về quý giá table bởi câu lệnh đơn

CREATE FUNCTION count_customer_with_address2 (
address varchar(200))RETURNS TABLEAS RETURN SELECT count(*) AS "Total customers" FROM ( SELECT Vay.MaKH FROM Vay,KhachHang WHERE Vay.MaKH=KhachHang.MaKH & KhachHang.DiaChi=
address GROUp BY Vay.MaKH HAVING SUM(Vay.SoTienVay)>=200) AS TempGọi thực hiện function:

SELECT * FROM dbo.count_customer_with_address2 ("Da Nang")Cách 3: Trả về giá trị table bởi đa câu lệnh

CREATE FUNCTION count_customer_with_address3 (
address varchar(200))RETURNS
new_table TABLE (DiaChi varchar(200), SoLuong int)ASBEGINDECLARE
count int = 0SELECT
count = count(*) FROM ( SELECT Vay.MaKH FROM Vay,KhachHang WHERE Vay.MaKH=KhachHang.MaKH and KhachHang.DiaChi=
address GROUp BY Vay.MaKH HAVING SUM(Vay.SoTienVay)>=200 ) AS Temp INSERT INTO
new_table VALUES (
address,
count) RETURNENDVí dụ 2. Sửa thay đổi function đã tạo ra ở trên bổ sung điều kiện quý khách có tuổi trường đoản cú 30 trở lên

ALTER FUNCTION count_customer_with_address (
count = count(*) FROM ( SELECT Vay.MaKH FROM vay JOIN KhachHang ON Vay.MaKH=KhachHang.MaKH WHERE KhachHang.DiaChi=
address và YEAR(GETDATE()) - YEAR(NgaySinh) >= 30 GROUp BY Vay.MaKH HAVING SUM(Vay.SoTienVay)>=200 ) AS Temp RETURN
countENDVí dụ 3.

Xem thêm: Tham Khảo 8 Mẫu Đồng Hồ Đo Nhịp Tim Huyết Áp Samsung, Có Nên Mua Đồng Hồ Thông Minh Đo Huyết Áp Không

xóa sổ function sẽ tạo

DROP FUNCTION count_customer_with_address

Kết luận

Trên đây là những gì mình tổng hợp cùng tự chỉ dẫn ví dụ minh họa đến từng phần. Hi vọng sẽ giúp đỡ ích cho chúng ta trong quá trình sử dụng function trong câu lệnh sql.