public IEnumerable <string> GetParameterNames(string query)
        {
            var tokens   = new SqlTokenizer(query).ToArray();
            var parsed   = SqlTokenizer.Parse(tokens);
            var declares = new SqlDeclares(parsed);
            var declared = new HashSet <string>(declares.Names ?? Enumerable.Empty <string>());

            return(new SqlTokenizer(query)
                   .OfType <SqlLiteral>()
                   .Where(t => t.Text[0] == '@' && !t.Text.StartsWith("@@") && !declared.Contains(t.Text))
                   .Select(t => t.Text.Substring(1))
                   .Distinct());
        }
    public IEnumerable<string> GetParameterNames(string query)
    {
      var tokens = new SqlTokenizer(query).ToArray();
      var parsed = SqlTokenizer.Parse(tokens);
      var declares = new SqlDeclares(parsed);
      var declared = new HashSet<string>(declares.Names ?? Enumerable.Empty<string>());

      return new SqlTokenizer(query)
        .OfType<SqlLiteral>()
        .Where(t => t.Text[0] == '@' && !t.Text.StartsWith("@@") && !declared.Contains(t.Text))
        .Select(t => t.Text.Substring(1))
        .Distinct();
    }