1. Trang chủ
  2. » Giáo Dục - Đào Tạo

hàm do người dùng định nghĩa

26 264 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 536 KB

Nội dung

Chương VI : Hàm Do Người Dùng Định Nghĩa Nhóm Bài 1: Khái quát hàm I Làm việc với UDFs  I.1 Tạo UDFs  Có hai cách để tạo UDFs : Sử dụng câu lệnh T-SQL dùng tiện ích Enterprise Manager Sử dụng câu lệnh T-SQL : Dùng câu lệnh CREATE FUNCTION để tạo UDFs cách sử dụng tiện ích SQL Query Analyzer sử dụng công cụ dạng dấu nhắc lệnh (command-prompt) điển cơng cụ oslq Cú pháp : Bài 1: Khái quát hàm a)  Mệnh đề CREATE FUNCTION UDFs khơng có tham số : CREATE FUNCTION [Test_func]()  UDFs có tham số : CREATE FUNCTION [Chuan_Ho_Ten](@Chuoi HoTen varchar(50)) Bài 1: Khái quát hàm b) Mệnh đề RETURNS  Dùng để thiết lập kiểu liệu trả UDFs Có hai cách thiết lập :  Trả giá trị kiểu vô hướng Khi định kiểu này, UDFs trả giá trị kết đơn lẻ : chuỗi, giá trị logic giá trị kiểu số Bài 1: Khái quát hàm  Trả table: thực tế bạn định trả hai loại table :  Inline table : Bài 1: Khái quát hàm  Chú ý :  Khi sử dụng UDFs loại inline table, bạn cần quan tâm đến quy tắc :  Mệnh đề RETURNS chứa từ khóa table Bạn khơng phải định nghĩa kiểu biến trả tập định dạng tập kết truy vấn câu lệnh SELECT mệnh đề RETURN  Khơng có phần thân hàm với việc bắt đầu BEGIN kết thúc với END  Mệnh đề RETURN chứa câu lệnh SELECT đơn giản nằm cặp dấu ngoặc đơn Câu lệnh SELECT sử dụng hàm có hạn chế giống câu lệnh SELECT sử dụng đối tượng VIEW Bài 1: Khái quát hàm  Multistatement table : Bài 1: Khái quát hàm Chú ý :  Khi sử dụng UDFs loại Multistatement table bạn cần quan tâm đến hạn chế sau :  Không thể gọi stored procedure từ câu lệnh bên  Khơng thể sử dụng hàm loại không xác định xây dựng sẵn SQL Server, ví dụ Getdate, Rand, …  Việc sử dụng RAISERROR @@ERROR hoàn tồn khơng hợp lệ  UDFs khơng thể sử dụng để sửa đổi thông tin table sở Bài 1: Khái quát hàm d) Khối lệnh BEGIN … END   Sử dụng tiện ích Enterprise Manager Bước : Khởi động tiện ích Enterprise Manager Chọn mục User Defined Functions và chọn tiếp New User Defined Function Bài 1: Khái quát hàm  Bước :  Xuất hình định thuộc tính liên quan đến UDFs đồng thời cho phép gõ vào câu lệnh phần thân UDFs Bài 1: Khái quát hàm b) Thay đổi nội dung câu lệnh chứa bên UDFs  Để sửa đổi câu lệnh bên UDFs, bạn xóa tạo lại UDFs Thay vậy, bạn bỏ qua bước xóa cách sử dụng câu lệnh ALTER FUNCTION Bài 1: Khái quát hàm c) Xem UDFs  Khi UDFs tạo, tên thông tin nhận dạng khác liên quan UDFs lưu trữ table hệ thống có tên SysObjects Chú ý :  Type = ’IF’ tương ứng với UDFs loại multistatement table inline table  Type = ’FN’ tương ứng với UDFs loại scalar Bài 1: Khái quát hàm d  Xóa UDFs Xóa UDFs có nghĩa gỡ bỏ khỏi table hệ thống SysComments SysObjects Bạn sử dụng câu lệnh DROP FUNCTION để xóa UDFs  Ví dụ : Bài : Các Thao Tác UDF I   Hàm người dùng định nghĩa (user DefinedFunction) Đối với người lập trình (lập trình sở liệu khơng phải ngoại lệ) cơng việc viết thủ tục, hàm cần thiết Các thủ tục nội tại(Stored procedure) hàm người dùng (UDFs) lưu database server Chúng gọi thực T-SQL gọi từ ứng dụng  Có loại UDF :    Hàm đơn trị (Scalar Function) Hàm đọc bảng (inline Table) Hàm tạo bảng (Multi Statement Table) Bài : Các Thao Tác UDF II   Gọi thực UDF thuộc loại hàm đơn trị Hàm trả giá trị, giá trị trả kiểu chuỗi , số, ngày, giờ, Sử dụng cú pháp sau để tạo hàm : CREATE FUNCTION Tên Hàm (Danh sách tham số) RETURNS kiểu trả BEGIN - Khai báo biến cục - Các lệnh xử lý, tính tốn -Trả giá trị RETURN Giá trị trả END Bài : Các Thao Tác UDF  Ví dụ : Tạo hàm đơn trị fnTong2So nhập vào hai số nguyên trả hàm số tổng : CREATE FUNCTION fnTong2So(@a INT, @b INT) RETURNS INT BEGIN - Khai báo biến cục DECLARE @s INT - Các câu lệnh xử lý, tính tốn SET @s = @a+@b -Trả giá trị RETURN @s END -Gọi thực PRINT dbo.fnTong2So(25,18) Bài : Các Thao Tác UDF  Ví Dụ: Tạo hàm đơn vị fnThamNien nhận vào ngày vào làm trả số năm làm việc CREATE FUNCTION fnThamNien (@Ngay_vao_lamDATETIME) RETURNS INT BEGIN -Khai báo biến cục DECLARE@so_nam INT -Các lệnh xử lý, tính tốn SET @So_nam = YEAR(GETDATE()) – YEAR(@ngay_vao_lam) -Trả giá trị RETURN @so_nam END Bài : Các Thao Tác UDF Gọi thực PRINT dbo.fnThamNien(‘1/27/1989’) -Gọi thực SELECT EmployeeID, LoginID, dbo.fnThamNien(HireDate) FROM HumanResources.Employee Bài : Các Thao Tác UDF III  Sử dụng UDF thuộc loại hàm đọc bảng: Hàm trả bảng (table) kết câu lệnh SELECT Sử dụng cú pháp sau để tạo hàm: CREATE FUNCTION Ten Ham (Danh sách tham số) RETURN TABLE AS RETURN (Câu lệnh SELECT) Bài : Các Thao Tác UDF  Ví dụ:  Tạo hàm đọc bảng fnLietKeNV nhận vào mã người quản lý trả bảng chứa nhân viên người quản lý  -Hàm đọc bảng CREATE FUNCTION fnLietKeNV@ManagerID INT RETURN TABLE AS RETURN (SELECT EmployeeID,LoginID FROM HumanResources.Employee WHERE ManagerID=@ManagerID) GO Bài : Các Thao Tác UDF -Gọi thực để xem nhân viên người quản lý có mã 21 SELECT * FROM dbo.fnLietKe(21) -Gọi thực để xem nhân viên người quản lý có mã 185 SELECT * FROM dbo.fnLietKeNV(185) Bài : Các Thao Tác UDF IV  Sử dụng UDF thuộc hàm tạo bảng Hàm trả bảng(table),bảng phải định nghĩa cấu trúc hàm  Sử dụng cú pháp sau để tạo hàm: CREATE FUNCTION Tên Hàm(Danh sách tham số) RETURN@Tên bảng TABLE(Tên cột Kiểu liệu,…) AS -Tạo liệu ban đầu cho bảng -Cập nhật liệu(nếu muốn) -Kết thúc RETUN END Bài : Các Thao Tác UDF  Ví dụ: Tạo hàm tạo bảng fnLietkeNV nhận vào trả nhân viên theo yêu cầu sau:  Nếu nhận vào nhân viên trả gồm có EmployeeID,FirstName  Nếu nhận vào nhân viên trả gồm có EmployeeID,FirestName LastName  -Hàm tạo bảng CREATE FUNCTION fnLienKetNV(@ten_day_du INT) RETUNS@bang TABLE(manv INT,ten NVARCHAR(100)) AS BEGIN Bài : Các Thao Tác UDF IF @ten_day_du=1 INSERT INTO @bang(manv,ten) SELECT EmployeeID,FirstName+’,’+LastName FROM HumanResources.Employee e INNER JOIN Person.Contactc ON e.ContactID=c.ContactID ELSE INSERT INTO @bang(manv,ten) SELECT EmployeeID,FirstName FROM HumanResources.Employee e INNER JOIN Persion.Contactc ON e.ContactID=c.ContactID -Ket thuc RETURN END Bài : Các Thao Tác UDF -Gọi thực để liệt kê FirstName LastName SELECT *FROM dbo.fnLietKeTenNV(1) -Gọi thực để liệt FirstName SELECT *FROM dbo.fnLietKeTenNV(0) ... hàm d  Xóa UDFs Xóa UDFs có nghĩa gỡ bỏ khỏi table hệ thống SysComments SysObjects Bạn sử dụng câu lệnh DROP FUNCTION để xóa UDFs  Ví dụ : Bài : Các Thao Tác UDF I   Hàm người dùng định nghĩa. .. Tác UDF IV  Sử dụng UDF thuộc hàm tạo bảng Hàm trả bảng(table),bảng phải định nghĩa cấu trúc hàm  Sử dụng cú pháp sau để tạo hàm: CREATE FUNCTION Tên Hàm( Danh sách tham số) RETURN@Tên bảng TABLE(Tên... loại UDF :    Hàm đơn trị (Scalar Function) Hàm đọc bảng (inline Table) Hàm tạo bảng (Multi Statement Table) Bài : Các Thao Tác UDF II   Gọi thực UDF thuộc loại hàm đơn trị Hàm trả giá trị,

Ngày đăng: 23/11/2017, 07:23

TỪ KHÓA LIÊN QUAN

w