Scripts.CreateStoredProcedureAsync Método

Definição

Cria um procedimento armazenado como uma operação assíncrona no serviço do Azure Cosmos DB.

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

Parâmetros

storedProcedureProperties
StoredProcedureProperties

O procedimento armazenado a ser criado.

requestOptions
RequestOptions

(Opcional) As opções para a solicitação de procedimento armazenado.

cancellationToken
CancellationToken

(Opcional) CancellationToken que representa o cancelamento da solicitação.

Retornos

O StoredProcedureProperties que foi criado contido em um Task objeto que representa a resposta do serviço para a operação assíncrona.

Exceções

Se storedProcedureProperties não estiver definido.

Representa uma consolidação de falhas que ocorreram durante o processamento assíncrono. Procure dentro de InnerExceptions para encontrar as exceções reais

Essa exceção pode encapsular muitos tipos diferentes de erros. Para determinar o erro específico, sempre examine a propriedade StatusCode. Alguns códigos comuns que você pode obter ao criar um Documento são:

StatusCodeMotivo da exceção
400BadRequest - Isso significa que algo estava errado com a solicitação fornecida. É provável que uma ID não tenha sido fornecida para o procedimento armazenado ou o Corpo tenha sido malformado.
403Proibido – você atingiu sua cota de procedimentos armazenados para a coleção fornecida. Entre em contato com o suporte para aumentar essa cota.
409Conflito – isso significa que um com uma StoredProcedureProperties ID correspondente à ID que você forneceu já existia.
413RequestEntityTooLarge - Isso significa que o corpo do StoredProcedureProperties que você tentou criar era muito grande.

Exemplos

Isso cria e executa um procedimento armazenado que acrescenta uma cadeia de caracteres ao primeiro item retornado da consulta.

string sprocBody = @"function simple(prefix)
   {
       var collection = getContext().getCollection();

       // Query documents and take 1st item.
       var isAccepted = collection.queryDocuments(
       collection.getSelfLink(),
       'SELECT * FROM root r',
       function(err, feed, options) {
           if (err)throw err;

           // Check the feed and if it's empty, set the body to 'no docs found',
           // Otherwise just take 1st element from the feed.
           if (!feed || !feed.length) getContext().getResponse().setBody(""no docs found"");
           else getContext().getResponse().setBody(prefix + JSON.stringify(feed[0]));
       });

       if (!isAccepted) throw new Error(""The query wasn't accepted by the server. Try again/use continuation token between API and script."");
   }";

Scripts scripts = this.container.Scripts;
StoredProcedureProperties storedProcedure = new StoredProcedureProperties(id, sprocBody);
StoredProcedureResponse storedProcedureResponse = await scripts.CreateStoredProcedureAsync(storedProcedure);

// Execute the stored procedure
CosmosItemResponse<string> sprocResponse = await scripts.ExecuteStoredProcedureAsync<string, string>(
                              id, 
                              "Item as a string: ", 
                              new PartitionKey(testPartitionId));
Console.WriteLine("sprocResponse.Resource");

Aplica-se a