Dela via


FUNKTION (entitets-SQL)

Definierar en funktion i omfånget för ett SQL-frågekommando för entitet.

Syntax

FUNCTION function-name  
( [ { parameter_name <type_definition>
        [ ,...n ]  
  ]  
) AS ( function_expression )
  
<type_definition>::=  
    { data_type | COLLECTION ( <type_definition> )
                | REF ( data_type )
                | ROW ( row_expression )
        }

Argument

function-name
Namnet på funktionen.

parameter-name
Namnet på en parameter i funktionen.

function_expression
Ett giltigt entitets-SQL-uttryck som är funktionen. Kommandot i funktionen kan fungera på parameter_name parametrar som skickas till funktionen.

data_type
Namn på en typ som stöds.

SAMLING ( <type_definition> )
Ett uttryck som returnerar en samling typer, rader eller referenser som stöds.

REF (data_type)
Ett uttryck som returnerar en referens till en entitetstyp.

RAD (row_expression)
Ett uttryck som returnerar anonyma, strukturellt inskrivna poster från ett eller flera värden. Mer information finns i RAD.

Kommentarer

Flera funktioner med samma namn kan deklareras infogade, så länge funktionssignaturerna är olika. Mer information finns i Lösning för funktionsöverbelastning.

En infogad funktion kan anropas endast i ett entitets-SQL-kommando när den har definierats i det kommandot. En infogad funktion kan dock anropas i en annan infogad funktion antingen före eller efter att den anropade funktionen har definierats. I följande exempel anropar funktion A funktion B innan funktion B definieras:

Function A() as ('A calls B. ' + B())

Function B() as ('B was called.')

A()

Mer information finns i Så här anropar du en användardefinierad funktion.

Funktioner kan också deklareras i själva modellen. Funktioner som deklareras i modellen körs på samma sätt som funktioner som deklareras infogade i kommandot. Mer information finns i Användardefinierade funktioner.

Exempel 1

Följande entitets-SQL-kommando definierar en funktion Products som tar ett heltalsvärde för att filtrera de returnerade produkterna.

USING Microsoft.Samples.Entity;
FUNCTION Products(listPrice Int32) AS 
(
SELECT VALUE p FROM AdventureWorksEntities.Products AS p 
    WHERE p.ListPrice >= listPrice
)
select p FROM Products(@price) AS p

Exempel 2

Följande entitets-SQL-kommando definierar en funktion StringReturnsCollection som tar en samling strängar för att filtrera de returnerade kontakterna.

USING Microsoft.Samples.Entity;
FUNCTION GetSpecificContacts(Ids Collection(Int32)) AS 
(
SELECT VALUE id FROM Ids AS id WHERE id < @price
)
GetSpecificContacts(SELECT VALUE c.ContactID 
    FROM AdventureWorksEntities.Contacts AS c)

Se även