protected override void ExecuteStatement(ExecutionContext context)
{
string varName;
if (VariableReference is SqlVariableReferenceExpression) {
varName = ((SqlVariableReferenceExpression) VariableReference).VariableName;
} else if (VariableReference is SqlReferenceExpression) {
varName = ((SqlReferenceExpression) VariableReference).ReferenceName.Name;
} else {
throw new StatementException("The type of variable reference is invalid.");
}
var variable = context.Request.Context.FindVariable(varName);
if (variable == null) {
var varType = ValueExpression.ReturnType(context.Request, null);
variable = context.Request.Context.DeclareVariable(varName, varType);
}
variable.SetValue(ValueExpression);
context.SetResult(variable.Evaluate(context.Request));
}