Những hàm vô hướng trả lại một giá trịđơn. Danh sách 4.2 trình bày script DiscountPrice.sql nó tạo ra hàm
DiscountPrice(), hàm này trả về giá chiết khấu = giá gốc của một món được nhân với một hệ số chiết khấu. Những giá trị này được gởi qua như những tham số tới hàm DiscountPrice() . Bạn có thể tải file này vào Query Analyzer và chạy nó.
Danh sách 4.2: DISCOUNTPRICE.SQL /*
DiscountPrice.sql creates a scalar function to return the new price of an item given the original price and a discount factor
*/
CREATE FUNCTION DiscountPrice(@OriginalPrice money, @Discount float) RETURNS money
AS BEGIN
RETURN @OriginalPrice * @Discount END
Những tham số gởi tới hàm được đặt trong cặp dấu móc sau tên của hàm trong phát biểu CREATE FUNCTION .
Cảnh báo:
Bảo đảm là bạn đã chọn cơ sở dữ liệu Northwind từ hộp danh sách xổ xuống trên thanh công cụ Query Analyzer trước khi chạy script. Bằng cách này, hàm sẽđược tạo ra trong cơ sở dữ liệu Northwind. Bạn cũng có thể tạo ra những hàm sử dụng Enterprise Manager. Bạn làm điều này bởi kích chuột phải trên node "User Defined Functions" trong thư mục Databases . Rồi bạn có thể cắt và dán nội dung của
Hình 4.4: Sử dụng Enterprise Manager để định nghĩa một hàm
Bạn có thể xem và sửa đổi một hàm bởi nhấn đúp tên hàm trong Enterprise Manager. Bạn cũng có thể xóa một hàm sử dụng Enterprise Manager. Object Browser (Bộ duyệt Đối tượng) của Query Analyzer (trình phân tích truy vấn) còn cho phép bạn xem, sửa đổi, và xóa những hàm nữa.
Mẹo nhỏ:
Bạn cũng có thể xóa một hàm sử dụng phát biểu DROP FUNCTION , và Bạn có thể sửa đổi một hàm sử dụng phát biểu ALTER FUNCTION.
Một khi bạn đã tạo ra hàm , bạn có thể gọi nó. Khi gọi một hàm vô hướng , bạn sử dụng cú pháp sau đây:
owner.functionName
Với owner là người sử dụng cơ sở dữ liệu -người sở hữu hàm , và functionName là tên của hàm.
Cho là bạn đã tạo ra hàm DiscountPrice() sử dụng người sử dụng dbo, thì bạn gọi hàm này sử dụng cú pháp : dbo.DiscountPrice(). Ví dụ sau đây trả về 3.0000, tức là 10* 0.3 :
SELECT dbo.DiscountPrice(10, 0.3);
Như với bất kỳ hàm nào khác, bạn có thể gởi một cột tới DiscountPrice(). Ví dụ sau đây trả lại 5.4000 và 18.0000; 5.4000 = 18.0000* 0.3
SELECT dbo.DiscountPrice(UnitPrice, 0.3), UnitPrice FROM Products
WHERE ProductID = 1;
Tất nhiên bạn cũng có thể gởi những biến như những tham số tới một hàm . như trước đây, ví dụ này trả lại 5.4000 và 18.0000
DECLARE @MyDiscountFactor float SET @MyDiscountFactor = 0.3
SELECT dbo.DiscountPrice(UnitPrice, @MyDiscountFactor), UnitPrice FROM Products
WHERE ProductID = 1;