次の方法で共有


Scripts.CreateUserDefinedFunctionAsync メソッド

定義

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)

パラメーター

userDefinedFunctionProperties
UserDefinedFunctionProperties

UserDefinedFunctionProperties オブジェクト。

requestOptions
RequestOptions

(省略可能)ユーザー定義関数要求のオプション。

cancellationToken
CancellationToken

(省略可能) CancellationToken 要求の取り消しを表します。

戻り値

非同期操作のサービス応答を表すタスク オブジェクト。

例外

が設定されていない場合 userDefinedFunctionProperties

非同期処理中に発生したエラーの統合を表します。 InnerExceptions 内を見て、実際の例外を見つけます

この例外は、さまざまな種類のエラーをカプセル化できます。 特定のエラーを特定するには、常に StatusCode プロパティを参照してください。 ユーザー定義関数を作成するときに得られる一般的なコードは次のとおりです。

StatusCode例外の理由
400BadRequest - これは、指定された要求に何らかの問題が発生したことを意味します。 新しいユーザー定義関数に ID が指定されなかったか、Body の形式が正しくない可能性があります。
403禁止 - 指定されたコレクションのユーザー定義関数のクォータに達しました。 このクォータを増やすには、サポートにお問い合わせください。
409競合 - これは、指定した ID と一致する ID が既に存在する を意味 UserDefinedFunctionProperties します。
413RequestEntityTooLarge - 作成しようとしたの本文が UserDefinedFunctionProperties 大きすぎたということです。

これにより、ユーザー定義関数が作成され、項目クエリで 関数が使用されます。

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);
        }
    }
}

適用対象