Compartir a través de


Scripts.CreateUserDefinedFunctionAsync Método

Definición

Crea una función definida por el usuario como una operación asincrónica en el servicio Azure Cosmos DB.

public abstract System.Threading.Tasks.Task<Microsoft.Azure.Cosmos.Scripts.UserDefinedFunctionResponse> CreateUserDefinedFunctionAsync (Microsoft.Azure.Cosmos.Scripts.UserDefinedFunctionProperties userDefinedFunctionProperties, Microsoft.Azure.Cosmos.RequestOptions requestOptions = default, System.Threading.CancellationToken cancellationToken = default);
abstract member CreateUserDefinedFunctionAsync : Microsoft.Azure.Cosmos.Scripts.UserDefinedFunctionProperties * Microsoft.Azure.Cosmos.RequestOptions * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Microsoft.Azure.Cosmos.Scripts.UserDefinedFunctionResponse>
Public MustOverride Function CreateUserDefinedFunctionAsync (userDefinedFunctionProperties As UserDefinedFunctionProperties, Optional requestOptions As RequestOptions = Nothing, Optional cancellationToken As CancellationToken = Nothing) As Task(Of UserDefinedFunctionResponse)

Parámetros

userDefinedFunctionProperties
UserDefinedFunctionProperties

Objeto UserDefinedFunctionProperties.

requestOptions
RequestOptions

(Opcional) Las opciones de la solicitud de función definida por el usuario.

cancellationToken
CancellationToken

(Opcional) CancellationToken que representa la cancelación de la solicitud.

Devoluciones

Objeto de tarea que representa la respuesta del servicio para la operación asincrónica.

Excepciones

Si userDefinedFunctionProperties no se establece.

Representa una consolidación de errores que se produjeron durante el procesamiento asincrónico. Busque en InnerExceptions para buscar las excepciones reales.

Esta excepción puede encapsular muchos tipos diferentes de errores. Para determinar el error específico, examine siempre la propiedad StatusCode. Algunos códigos comunes que puede obtener al crear una función definida por el usuario son:

StatusCodeMotivo de la excepción
400BadRequest: esto significa que algo estaba mal con la solicitud proporcionada. Es probable que no se haya proporcionado un identificador para la nueva función definida por el usuario o que el cuerpo tenga un formato incorrecto.
403Prohibido: ha alcanzado la cuota de funciones definidas por el usuario para la colección proporcionada. Póngase en contacto con el soporte técnico para aumentar esta cuota.
409Conflicto: significa que UserDefinedFunctionProperties un con un identificador que coincide con el identificador que proporcionó ya existía.
413RequestEntityTooLarge: esto significa que el cuerpo del UserDefinedFunctionProperties objeto que intentó crear era demasiado grande.

Ejemplos

Esto crea una función definida por el usuario y, a continuación, usa la función en una consulta de elementos.

Scripts scripts = this.container.Scripts;
await scripts.UserDefinedFunctions.CreateUserDefinedFunctionAsync(
    new UserDefinedFunctionProperties 
    { 
        Id = "calculateTax", 
        Body = @"function(amt) { return amt * 0.05; }" 
    });

QueryDefinition sqlQuery = new QueryDefinition(
    "SELECT VALUE udf.calculateTax(t.cost) FROM toDoActivity t where t.cost > @expensive and t.status = @status")
    .WithParameter("@expensive", 9000)
    .WithParameter("@status", "Done");

using (FeedIterator<double> setIterator = this.container.Items.GetItemsQueryIterator<double>(
    sqlQueryDefinition: sqlQuery,
    partitionKey: "Done")
{
    while (setIterator.HasMoreResults)
    {
        foreach (var tax in await setIterator.ReadNextAsync())
        {
            Console.WriteLine(tax);
        }
    }
}

Se aplica a