Scripts.CreateStoredProcedureAsync Método

Definición

Crea un procedimiento almacenado como una operación asincrónica en el servicio 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

Procedimiento almacenado que se va a crear.

requestOptions
RequestOptions

(Opcional) Opciones de la solicitud de procedimiento almacenado.

cancellationToken
CancellationToken

(Opcional) CancellationToken que representa la cancelación de la solicitud.

Devoluciones

objeto StoredProcedureProperties que se creó dentro de un Task objeto que representa la respuesta del servicio para la operación asincrónica.

Excepciones

Si storedProcedureProperties no se establece.

Representa una consolidación de errores que se produjeron durante el procesamiento asincrónico. Busque en InnerExceptions para buscar las excepciones reales.

Esta excepción puede encapsular muchos tipos diferentes de errores. Para determinar el error específico, examine siempre la propiedad StatusCode. Algunos códigos comunes que puede obtener al crear un documento son:

StatusCodeMotivo de la excepción
400BadRequest: esto significa que algo estaba mal con la solicitud proporcionada. Es probable que no se haya proporcionado un identificador para el procedimiento almacenado o que el cuerpo tenga un formato incorrecto.
403Prohibido: ha alcanzado la cuota de procedimientos almacenados para la colección proporcionada. Póngase en contacto con el soporte técnico para aumentar esta cuota.
409Conflicto: significa que StoredProcedureProperties un con un identificador que coincide con el identificador que proporcionó ya existía.
413RequestEntityTooLarge: esto significa que el cuerpo del StoredProcedureProperties objeto que intentó crear era demasiado grande.

Ejemplos

Esto crea y ejecuta un procedimiento almacenado que anexa una cadena al primer elemento devuelto de la 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");

Se aplica a