public object VisitEmbeddedVariableNode(EmbeddedVariableNode node, Context parameter) { var location = node.Location; var name = node.VariableName; if (!_valueObjects.ContainsKey(name)) { throw new ArgumentException($"Invalid argument found {name}"); } var value = _propertyValues[name]; //var isValid = _evaluator.Evaluate(name, _propertyValues); if (value != null && value.Value != null) { var fragment = value.Value.ToString(); if (fragment.IndexOf('\'') > -1) { throw new SqlBuildException(ExceptionMessageId.Esp2116, location.Sql, location.LineNumber, location.Position, node.Text); } if (fragment.IndexOf(';') > -1) { throw new SqlBuildException(ExceptionMessageId.Esp2117, location.Sql, location.LineNumber, location.Position, node.Text); } if (fragment.IndexOf("--", StringComparison.Ordinal) > -1) { throw new SqlBuildException(ExceptionMessageId.Esp2122, location.Sql, location.LineNumber, location.Position, node.Text); } if (fragment.IndexOf("/*", StringComparison.Ordinal) > -1) { throw new SqlBuildException(ExceptionMessageId.Esp2123, location.Sql, location.LineNumber, location.Position, node.Text); } if (!StartWithClauseKeyword(fragment)) { parameter.IsAvailable = true; } parameter.AppendRawSql(fragment); parameter.AppendFormattedSql(fragment); } foreach (var child in node.Children) { child.Accept(this, parameter); } return(null); }
private void ParseEmbeddedVariableBlockComment() { var variableName = SqlTokenHelper.Extract(_tokenType, _token); if (string.IsNullOrEmpty(variableName)) { throw new SqlParseException(ExceptionMessageId.Esp2121, _sql, _tokenizer.LineNumber, _tokenizer.Position, _token); } var node = new EmbeddedVariableNode(Location, variableName, _token); AppendNode(node); _nodeStack.Push(node); }