sql >> Databáze >  >> RDS >> Sqlserver

Sql Server deterministická uživatelsky definovaná funkce

Stačí jej vytvořit with schemabinding .

SQL Server poté ověří, zda splňuje kritéria, aby mohl být považován za deterministický (což dělá, protože nepřistupuje k žádným externím tabulkám ani nepoužívá nedeterministické funkce, jako je getdate() ).

Můžete ověřit, že to fungovalo pomocí

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

Přidání možnosti schemabinding do vašeho původního kódu funguje dobře, ale byla by o něco jednodušší verze.

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. Jak používat Partition By nebo Max?

  2. Připojení Genero k SQL Serveru

  3. jquery datatable serverside v codeigniter nefunguje

  4. Nahrazení textu ve sloupci BLOB