Partager via


Scripts.CreateStoredProcedureAsync Méthode

Définition

Crée une procédure stockée en tant qu’opération asynchrone dans le service 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)

Paramètres

storedProcedureProperties
StoredProcedureProperties

Procédure stockée à créer.

requestOptions
RequestOptions

(Facultatif) Options de la demande de procédure stockée.

cancellationToken
CancellationToken

(Facultatif) CancellationToken représentant l’annulation de la demande.

Retours

StoredProcedureProperties qui a été créé dans un Task objet représentant la réponse du service pour l’opération asynchrone.

Exceptions

Si storedProcedureProperties n’est pas défini.

Représente une consolidation des échecs qui se sont produits pendant le traitement asynchrone. Recherchez la ou les exceptions réelles dans InnerExceptions

Cette exception peut encapsuler de nombreux types d’erreurs différents. Pour déterminer l’erreur spécifique, examinez toujours la propriété StatusCode. Voici quelques codes courants que vous pouvez obtenir lors de la création d’un document :

StatusCodeRaison de l’exception
400BadRequest : cela signifie qu’il y a eu un problème avec la demande fournie. Il est probable qu’un ID n’a pas été fourni pour la procédure stockée ou que le corps a été mal formé.
403Interdit : vous avez atteint votre quota de procédures stockées pour la collection fournie. Contactez le support technique pour augmenter ce quota.
409Conflit : cela signifie qu’un StoredProcedureProperties avec un ID correspondant à l’ID que vous avez fourni existait déjà.
413RequestEntityTooLarge : cela signifie que le corps du StoredProcedureProperties que vous avez essayé de créer était trop grand.

Exemples

Cela crée et exécute une procédure stockée qui ajoute une chaîne au premier élément retourné par la requête.

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

S’applique à