Freigeben über


CosmosScripts.CreateStoredProcedureAsync Methode

Definition

Erstellt eine gespeicherte Prozedur als asynchronen Vorgang im Azure Cosmos DB-Dienst.

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

Parameter

storedProcedureProperties
StoredProcedureProperties

Die zu erstellende gespeicherte Prozedur

requestOptions
RequestOptions

(Optional) Die Optionen für die Anforderung einer gespeicherten Prozedur RequestOptions

cancellationToken
CancellationToken

(Optional) CancellationToken stellt den Anforderungsabbruch dar.

Gibt zurück

Die StoredProcedureProperties erstellte , die in einem Task -Objekt enthalten ist, das die Dienstantwort für den asynchronen Vorgang darstellt.

Ausnahmen

Wenn storedProcedureProperties nicht festgelegt ist.

Stellt eine Konsolidierung von Fehlern dar, die während der asynchronen Verarbeitung aufgetreten sind. Suchen Sie in InnerExceptions nach den tatsächlichen Ausnahmen.

Diese Ausnahme kann viele verschiedene Fehlertypen kapseln. Um den spezifischen Fehler zu ermitteln, sehen Sie sich immer die StatusCode-Eigenschaft an. Einige häufige Codes, die Sie beim Erstellen eines Dokuments erhalten können, sind:

StatusCodeGrund für die Ausnahme
400BadRequest: Dies bedeutet, dass mit der bereitgestellten Anforderung ein Fehler aufgetreten ist. Es ist wahrscheinlich, dass keine ID für die gespeicherte Prozedur angegeben wurde, oder der Textkörper wurde falsch formatiert.
403Verboten: Sie haben ihr Kontingent an gespeicherten Prozeduren für die angegebene Sammlung erreicht. Wenden Sie sich an den Support, um dieses Kontingent zu erhöhen.
409Konflikt: Dies bedeutet, dass ein StoredProcedureProperties mit einer ID übereinstimmt, die der von Ihnen angegebenen ID entspricht, bereits vorhanden ist.
413RequestEntityTooLarge: Dies bedeutet, dass der Textkörper des StoredProcedureProperties zu erstellenden zu groß war.

Beispiele

Dadurch wird eine gespeicherte Prozedur erstellt und ausgeführt, die eine Zeichenfolge an das erste Element anhängt, das von der Abfrage zurückgegeben wird.

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

CosmosScripts scripts = this.container.Scripts;
StoredProcedureProperties storedProcedure = new StoredProcedureProperties(id, sprocBody);
Response<StoredProcedureProperties> 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");

Gilt für: