Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво е скаларен UDF в SQL Server?

В SQL Server скаларна UDF или скаларна дефинирана от потребителя функция е дефинирана от потребителя функция, която връща една стойност.

Това е в контраст с функцията със стойност на таблица, която връща набор от резултати под формата на таблица.

Дефинираните от потребителя функции могат да бъдат написани или като T-SQL UDFs или CLR (Common Language Runtime) UDFs. CLR ви позволява да създавате UDF в управляван код, използвайки всеки език за програмиране .NET Framework. След това тези функции са достъпни за T-SQL или друг управляван код.

Пример 1 – Основен скаларен UDF

Ето пример за кода, използван за създаване на основен T-SQL скаларен UDF.

СЪЗДАВАНЕ НА ФУНКЦИЯ dbo.ufn_discountPrice( @price DECIMAL(12,2), @discount DECIMAL(12,2) ) ВРЪЩА DECIMAL (12,2) КАТО ЗАПОЧВА ВРЪЩАНЕ @price * (1 - @discount);END; 

Този скаларен UDF приема два параметъра; @price и @discount . Те се предават на функцията като аргументи при всяко извикване на функцията. Функцията взема стойността на тези аргументи, извършва изчисление, използвайки тези стойности, след което връща получената стойност. В този случай намалената цена се връща.

Пример 2 – Извикване на UDF

След като UDF бъде създаден, той може да бъде извикан в T-SQL код по всяко време, когато имате нужда от него.

Ето пример за извикване на UDF:

ИЗБЕРЕТЕ dbo.ufn_discountPrice(100, .2) КАТО резултат;

Резултат

+---------+| Резултат ||----------|| 80,00 |+----------+

Можете също да използвате скаларни UDF в изчислени колони. Това може да бъде особено удобно, ако имате нужда от изчислената колона за достъп до данни в друга таблица.

Опции за функции

Когато създавате скаларен UDF, има различни опции, които можете да приложите към функцията.

Например можете да посочите дали трябва да бъде обвързан със схема или не. Можете да посочите, че трябва да бъде криптиран. Можете също да посочите EXECUTE AS клауза за определяне на контекста на защита, при който се изпълнява дефинираната от потребителя функция.

Вижте документацията на Microsoft за подробен списък с опции, които можете да предоставите, когато създавате или променяте дефинирана от потребителя функция.

Тип данни за параметър

За функциите на T-SQL всички типове данни, включително CLR дефинирани от потребителя типове и потребителски дефинирани типове таблици, са разрешени с изключение на timestamp и нескаларния курсор имасата видове.

За функциите на CLR всички типове данни, включително CLR дефинирани от потребителя типове, са разрешени с изключение на текст , ntext ,изображение , потребителски дефинирани типове таблици, клеймо за време типове данни и нескаларния курсор имасата видове.

Тип данни за връщане

Типът данни за връщане за T-SQL скаларни UDF може да бъде всеки тип данни, с изключение на timestamp и нескаларния курсор имасата видове.

Функциите на CLR могат да използват всеки тип данни, освен текст , ntext ,изображение , клеймо за време , и нескаларния курсор имасата видове.

Както T-SQL, така и функциите CLR могат да имат CLR дефиниран от потребителя тип за връщаната си стойност.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате RANK() в SQL Server

  2. Защо прехвърлянето от float към varchar се закръгля в SQL Server?

  3. Задайте опция 9 в съхранената процедура на SQL Server, като използвате WinHttp.WinHttpRequest.5.1 за TLS 1.2

  4. EXP() Примери в SQL Server

  5. Проблеми с производителността на SQL Server 2012 Enterprise Edition при лицензиране на CAL