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

Sql Server детерминистична дефинирана от потребителя функция

Просто трябва да го създадете with schemabinding .

След това SQL Server ще провери дали отговаря или не на критериите, за да се счита за детерминистичен (което прави, тъй като няма достъп до никакви външни таблици или използва недетерминистични функции като getdate() ).

Можете да проверите дали работи с

SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].[FullNameLastFirst]'), 'IsDeterministic')

Добавянето на опцията schemabinding към вашия оригинален код работи добре, но би била малко по-опростена версия.

CREATE FUNCTION [dbo].[FullNameLastFirst] (@IsPerson  BIT,
                                           @LastName  NVARCHAR(100),
                                           @FirstName NVARCHAR(100))
RETURNS NVARCHAR(201)
WITH SCHEMABINDING
AS
  BEGIN
      RETURN CASE
               WHEN @IsPerson = 0
                     OR @FirstName = '' THEN @LastName
               ELSE @LastName + ' ' + @FirstName
             END
  END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате ВСЕКИ / НЯКОЙ логически оператор в SQL Server - SQL Server / TSQL урок, част 127

  2. Мога ли да задам ignore_dup_key за първичен ключ?

  3. Нуждаете се от помощ с оператора Merge

  4. Как мога да създам потребител в базата данни на SQL Server Express, която добавих към моя проект?

  5. Как да шифровате изглед в SQL Server