     
     
     // MARK: - Fetching From Database
+    
+    /// Returns a sequence of values fetched from an SQL query.
+    ///
+    ///     let names = String.fetch(db, "SELECT name FROM ...") // DatabaseSequence<String>
+    ///
+    /// The returned sequence can be consumed several times, but it may yield
+    /// different results, should database changes have occurred between two
+    /// generations:
+    ///
+    ///     let names = String.fetch(db, "SELECT name FROM ...")
+    ///     Array(names) // Arthur, Barbara
+    ///     execute("DELETE ...")
+    ///     Array(names) // Arthur
+    ///
+    /// If the database is modified while the sequence is iterating, the
+    /// remaining elements are undefined.
+    ///
+    /// - parameter db: A Database.
+    /// - parameter sql: An SQL query.
+    /// - parameter arguments: Statement arguments.
+    /// - returns: A sequence.
+    public static func fetch(db: Database, _ sql: String, arguments: StatementArguments = StatementArguments.Default) -> DatabaseSequence<Self> {
+        return fetch(db.selectStatement(sql), arguments: arguments)
+    }
+    
+    /// Returns an array of values fetched from an SQL query.
+    ///
+    ///     let names = String.fetchAll(db, "SELECT name FROM ...") // [String]
+    ///
+    /// - parameter db: A Database.
+    /// - parameter sql: An SQL query.
+    /// - parameter arguments: Statement arguments.
+    /// - returns: An array.
+    public static func fetchAll(db: Database, _ sql: String, arguments: StatementArguments = StatementArguments.Default) -> [Self] {
+        return fetchAll(db.selectStatement(sql), arguments: arguments)
+    }
     
     /// Returns a single value fetched from an SQL query.
     ///

    
    // MARK: - Fetching From SelectStatement
    
    /// Returns a single value fetched from a prepared statement.
    ///
    /// The result is nil if the query returns no row, or if no value can be

///     String.fetchOne(statement, arguments:...)        // String?
///
/// DatabaseValueConvertible is adopted by Bool, Int, String, etc.
public protocol DatabaseValueConvertible {
    /// Returns a value that can be stored in the database.
    var databaseValue: DatabaseValue { get }
    
