Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Define una función en el ámbito de un comando de consulta entity SQL.
Sintaxis
FUNCTION function-name
( [ { parameter_name <type_definition>
[ ,...n ]
]
) AS ( function_expression )
<type_definition>::=
{ data_type | COLLECTION ( <type_definition> )
| REF ( data_type )
| ROW ( row_expression )
}
Argumentos
function-name
Nombre de la función.
parameter-name
Nombre de un parámetro en la función.
function_expression
Expresión de Entity SQL válida que es la función . El comando de la función puede actuar en parameter_name parámetros pasados a la función.
data_type
Nombre de un tipo admitido.
COLLECTION ( <type_definition> )
Expresión que devuelve una colección de tipos, filas o referencias admitidos.
REF (data_type)
Expresión que devuelve una referencia a un tipo de entidad.
ROW (row_expression)
Expresión que devuelve registros anónimos con tipo estructural de uno o varios valores. Para obtener más información, consulte ROW.
Observaciones
Se pueden declarar varias funciones con el mismo nombre en línea, siempre que las firmas de función sean diferentes. Para obtener más información, consulte Resolución de sobrecarga de funciones.
Solo se puede llamar a una función insertada en un comando Entity SQL después de que se haya definido en ese comando. Sin embargo, se puede llamar a una función insertada dentro de otra función insertada antes o después de definir la función llamada. En el ejemplo siguiente, la función A llama a la función B antes de definir la función B:
Function A() as ('A calls B. ' + B())
Function B() as ('B was called.')
A()
Para obtener más información, vea How to: Call a User-Defined Function.
Las funciones también se pueden declarar en el propio modelo. Las funciones declaradas en el modelo se ejecutan de la misma manera que las funciones declaradas en línea en el comando. Para obtener más información, consulte User-Defined Functions.
Ejemplo 1
El siguiente comando entity SQL define una función Products que toma un valor entero para filtrar los productos devueltos.
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
Ejemplo 2
El siguiente comando Entity SQL define una función StringReturnsCollection que toma una colección de cadenas para filtrar los contactos devueltos.
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)