void ProcessRawQuery() { _queries.Clear(); switch (CommandType) { case CommandType.Text: SqlQueryParser.ParseRawQuery(CommandText, _connection == null || _connection.UseConformantStrings, _parameters, _queries); if (_queries.Count > 1 && _parameters.Any(p => p.IsOutputDirection)) { throw new NotSupportedException("Commands with multiple queries cannot have out parameters"); } break; case CommandType.TableDirect: _queries.Add(new NpgsqlStatement("SELECT * FROM " + CommandText, new List <NpgsqlParameter>())); break; case CommandType.StoredProcedure: var numInput = _parameters.Count(p => p.IsInputDirection); var sb = new StringBuilder(); sb.Append("SELECT * FROM "); sb.Append(CommandText); sb.Append('('); for (var i = 1; i <= numInput; i++) { sb.Append('$'); sb.Append(i); if (i < numInput) { sb.Append(','); } } sb.Append(')'); _queries.Add(new NpgsqlStatement(sb.ToString(), _parameters.Where(p => p.IsInputDirection).ToList())); break; default: throw PGUtil.ThrowIfReached(); } }