public override string ToString() { var query = base.ToString(); if (StatementCount <= 1) { query = query.Trim(); // only trim for small queries as memory may be wasted otherwise if (query.EndsWith(StatementTerminator)) { query = query.Substring(0, query.Length - StatementTerminator.Length); } } else { var stringBuilder = new FastStringBuilder(); stringBuilder.AppendFormat("SET TERM {0};{1}", StatementTerminator, Environment.NewLine); if (_variableDeclarations.Count > 0) { stringBuilder.AppendLine("EXECUTE BLOCK AS"); stringBuilder.AppendLine("BEGIN"); foreach (var variable in _variableDeclarations.Keys) { stringBuilder.AppendFormat("DECLARE VARIABLE {0} {1}{2}{3}", variable, ConvertTypeToSQLType(_variableDeclarations[variable]), StatementTerminator, Environment.NewLine); } } stringBuilder.Append(query); if (_variableDeclarations.Count > 0) { stringBuilder.Append("END"); } query = stringBuilder.ToString(); } return(query); }