protected override void ExecuteStatement(ExecutionContext context)
{
var args = Arguments != null ? Arguments.ToArray() : new InvokeArgument[0];
var invoke = new Invoke(ProcedureName, args);
var procedure = context.DirectAccess.ResolveProcedure(invoke);
if (procedure == null)
throw new StatementException(String.Format("Could not retrieve the procedure '{0}': maybe not a procedure.", ProcedureName));
//if (!context.User.CanExecuteProcedure(invoke,context.Request))
// throw new MissingPrivilegesException(context.User.Name, ProcedureName, Privileges.Execute);
var result = procedure.Execute(Arguments, context.Request);
if (result.HasOutputParameters) {
var output = result.OutputParameters;
var names = output.Keys.ToArray();
var values = output.Values.Select(SqlExpression.Constant).Cast<SqlExpression>().ToArray();
var resultTable = new FunctionTable(values, names, context.Request);
context.SetResult(resultTable);
}
}