你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

CosmosScripts.CreateUserDefinedFunctionAsync 方法

定义

在 Azure Cosmos DB 服务中创建用户定义的函数作为异步操作。

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

参数

userDefinedFunctionProperties
UserDefinedFunctionProperties

UserDefinedFunctionProperties 对象。

requestOptions
RequestOptions

(可选) 用户定义的函数请求的选项 RequestOptions

cancellationToken
CancellationToken

(表示请求取消的可选) CancellationToken

返回

表示异步操作的服务响应的任务对象。

例外

如果未 userDefinedFunctionProperties 设置 。

表示异步处理期间发生的故障的合并。 在 InnerExceptions 中查找实际异常 ()

此异常可以封装许多不同类型的错误。 若要确定特定错误,请始终查看 StatusCode 属性。 创建用户定义的函数时可能会获取的一些常见代码包括:

StatusCode异常原因
400BadRequest - 这意味着所提供的请求出现问题。 很可能没有为新的用户定义的函数提供 ID,或者 Body 格式不正确。
403禁止 - 已达到提供的集合的用户定义函数配额。 请联系支持人员以增加此配额。
409冲突 - 这表示 UserDefinedFunctionProperties ID 与所提供的 ID 匹配的 已存在。
413RequestEntityTooLarge - 这意味着尝试创建的 正文 UserDefinedFunctionProperties 太大。

示例

这会创建用户定义的函数,然后在项查询中使用该函数。

CosmosScripts 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");

await foreach (double tax in this.container.Items.GetItemsQueryIterator<double>(
    sqlQueryDefinition: sqlQuery,
    partitionKey: "Done"))
{
    Console.WriteLine(tax);
}

适用于