public override void VisitSetOptionStatement(SetOptionStatement node) { base.VisitSetOptionStatement(node); if (_position >= node.SetKeyword.End && (node.ValueClause == null || _position <= node.ValueClause.TextStart)) { _binder._scopeKind = ScopeKind.Option; } }
public override SetStatement Execute() { string identifier = GetIdentifier(); if (identifier.StartsWith("@")) { var variableStatement = new SetVariableStatement(); variableStatement.Variable = identifier; Tokenizer.ExpectToken(Constants.Assignment); variableStatement.Assignment = new ExpressionParser(Tokenizer).Execute(); return(variableStatement); } else if (_options.Contains(identifier)) { var optionStatement = new SetOptionStatement(); if (String.Compare(identifier, Constants.Statistics, true) == 0) { if (!Tokenizer.IsNextToken(Constants.Io, Constants.Xml, Constants.Profile, Constants.Time)) { throw new SyntaxException("STATISTIC expects IO, XML, PROFILE, or TIME"); } identifier += " " + Tokenizer.Current.Value; Tokenizer.ReadNextToken(); } optionStatement.Option = identifier; if (!Tokenizer.IsNextToken(Constants.On, Constants.Off)) { throw new SyntaxException("SET [option] expects ON or OFF"); } optionStatement.Assignment = new StringExpression(Tokenizer.Current.Value, null); Tokenizer.ReadNextToken(); return(optionStatement); } else { switch (identifier) { case Constants.DateFirst: { SetDateFirstStatement statement = new SetDateFirstStatement(); ReadAssignment(statement); return(statement); } case Constants.DateFormat: { SetDateFormatStatement statement = new SetDateFormatStatement(); ReadAssignment(statement); return(statement); } case Constants.DeadlockPriority: { SetDeadlockPriorityStatement statement = new SetDeadlockPriorityStatement(); ReadAssignment(statement); return(statement); } } } throw new ParserNotImplementedException(String.Format("SET {0} is not supported", identifier)); }
public override T VisitSetOptionStatement(SetOptionStatement node) { throw new NotImplementedException(); }