Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

UDF vô hướng trong SQL Server là gì?

Trong SQL Server, một UDF vô hướng, hoặc hàm vô hướng do người dùng xác định, là một hàm do người dùng xác định trả về một giá trị duy nhất.

Điều này trái ngược với một hàm có giá trị bảng, hàm này trả về một tập hợp kết quả ở dạng bảng.

Các hàm do người dùng định nghĩa có thể được viết dưới dạng UDF T-SQL hoặc UDF CLR (Common Language Runtime). CLR cho phép bạn tạo UDF trong mã được quản lý bằng bất kỳ ngôn ngữ lập trình .NET Framework nào. Các chức năng này sau đó có thể truy cập được vào T-SQL hoặc mã được quản lý khác.

Ví dụ 1 - UDF vô hướng cơ bản

Đây là ví dụ về mã được sử dụng để tạo UDF vô hướng T-SQL cơ bản.

 TẠO CHỨC NĂNG dbo.ufn_discountPrice (@price DECIMAL (12,2), @discount DECIMAL (12,2)) QUAY LẠI KHOẢNG CÁCH (12,2) ASBEGIN RETURN @price * (1 - @discount); HẾT;  

UDF vô hướng này chấp nhận hai tham số; @price@discount . Chúng được chuyển vào hàm dưới dạng đối số bất cứ khi nào hàm được gọi. Hàm nhận giá trị của các đối số đó, thực hiện phép tính bằng cách sử dụng các giá trị đó, sau đó trả về giá trị kết quả. Trong trường hợp này, giá đã chiết khấu sẽ được trả lại.

Ví dụ 2 - Gọi UDF

Khi UDF đã được tạo, nó có thể được gọi trong mã T-SQL bất kỳ lúc nào bạn cần.

Dưới đây là một ví dụ về cách gọi UDF:

 CHỌN dbo.ufn_discountPrice (100, .2) AS Kết quả; 

Kết quả

 + ---------- + | Kết quả || ---------- || 80,00 | + ---------- + 

Bạn cũng có thể sử dụng UDF vô hướng trong các cột được tính toán. Điều này có thể đặc biệt hữu ích nếu bạn cần cột được tính toán để truy cập dữ liệu trong bảng khác.

Tùy chọn chức năng

Khi bạn tạo một UDF vô hướng, có nhiều tùy chọn khác nhau mà bạn có thể áp dụng cho hàm.

Ví dụ, bạn có thể chỉ định xem nó có nên bị ràng buộc lược đồ hay không. Bạn có thể chỉ định rằng nó phải được mã hóa. Bạn cũng có thể chỉ định một EXECUTE AS để chỉ định ngữ cảnh bảo mật mà theo đó chức năng do người dùng xác định được thực thi.

Xem tài liệu của Microsoft để biết danh sách chi tiết các tùy chọn bạn có thể cung cấp khi tạo hoặc thay đổi một chức năng do người dùng xác định.

Kiểu dữ liệu tham số

Đối với các hàm T-SQL, tất cả các kiểu dữ liệu, bao gồm cả kiểu CLR do người dùng xác định và loại bảng do người dùng xác định, đều được phép ngoại trừ dấu thời gian con trỏ nonscalar và bảng các loại.

Đối với các hàm CLR, tất cả các loại dữ liệu, bao gồm cả các loại CLR do người dùng xác định, đều được phép ngoại trừ văn bản , ntext , hình ảnh , các loại bảng do người dùng xác định, dấu thời gian kiểu dữ liệu và con trỏ không phân vùng và bảng các loại.

Loại dữ liệu trả về

Kiểu dữ liệu trả về cho UDF vô hướng T-SQL có thể là bất kỳ kiểu dữ liệu nào ngoại trừ dấu thời gian con trỏ nonscalar và bảng các loại.

Các hàm CLR có thể sử dụng bất kỳ kiểu dữ liệu nào ngoại trừ văn bản , ntext , hình ảnh , dấu thời gian con trỏ không phân vùng và bảng các loại.

Cả hai hàm T-SQL và CLR đều có thể có kiểu CLR do người dùng xác định cho giá trị trả về của nó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để mở rộng các giá trị được phân tách bằng dấu phẩy thành các hàng riêng biệt bằng SQL Server 2005?

  2. Các kỹ thuật tốt hơn để cắt bớt các số không ở đầu trong SQL Server?

  3. Sao lưu cấp bảng

  4. Truy vấn SQL cho trung bình cuộn trong 7 ngày trong SQL Server

  5. Điều chỉnh dịch vụ báo cáo máy chủ SQL