Propriedade do RDL Context.ExecuteForPrepare
Obtém um valor que indica se o procedimento armazenado está sendo chamado para fins de preparação.
Namespace: Microsoft.AnalysisServices.AdomdServer
Assembly: msmgdsrv (em msmgdsrv.dll)
Sintaxe
'Declaração
Public Shared ReadOnly Property ExecuteForPrepare As Boolean
Get
'Uso
Dim value As Boolean
value = Context.ExecuteForPrepare
public static bool ExecuteForPrepare { get; }
public:
static property bool ExecuteForPrepare {
bool get ();
}
static member ExecuteForPrepare : bool
static function get ExecuteForPrepare () : boolean
Valor da propriedade
Tipo: Boolean
true se o procedimento armazenado estiver sendo chamado para fins de preparação; caso contrário, false.
Comentários
Os procedimentos armazenados e funções definidas pelo usuário (UDFs) são chamados no "modo de preparação" para determinar os metadados necessários para criar o conjunto de células final, combinado ou o conjunto de linhas. Durante a execução no "modo de preparação", o procedimento armazenado ou UDF não deve retornar dados, mas retorna imediatamente após a criação o tipo de dados que seria retornado normalmente.
Os procedimentos armazenados e UDFs só podem ser chamados no "modo de preparação" se foram atribuídos com SafeToPrepareAttribute. Se um procedimento armazenado for chamado no "modo de preparação", mas o procedimento armazenado não estiver atribuído, uma exceção será gerada.
UDFs que retornam DataTables são preparadas automaticamente antes da execução da consulta.
Exemplos
No exemplo a seguir, o procedimento armazenado retorna imediatamente após a criação da tabela de dados quando no "modo de preparação":
[SafeToPrepare(true)]
public System.Data.DataTable GetPreparedTable()
{
System.Data.DataTable results = new System.Data.DataTable();
results.Columns.Add("A", typeof(int));
results.Columns.Add("B", typeof(string));
if (Context.ExecuteForPrepare)
{
// If preparing, return just the schema with no data
return results;
}
//Otherwise return data
object[] row = new object[2];
row[0] = 1;
row[1] = "A";
results.Rows.Add(row);
row[0] = 2;
row[1] = "B";
results.Rows.Add(row);
return results;
}