 	/// - parameter block: A closure called for each result row
 	///
 	/// - throws: Any error thrown in `block` or an error if `sql` couldn't be compiled, `values` couldn't be bound, or the statement couldn't be executed
+	public func execute<S: Sequence, T: ParameterBindable>(sql: String, parameters values: S, _ block: ((_ row: Row) throws -> ())? = nil) throws where S.Iterator.Element == T {
+		let statement = try prepare(sql: sql)
+		try statement.bind(parameters: values)
+		try statement.execute(block)
+	}
+
+	/// Executes `stmt` with the *n* parameters in `values` bound to the first *n* SQL parameters of `stmt` and applies `block` to each result row.
+	///
+	/// - parameter sql: The SQL statement to execute
+	/// - parameter values: A sequence of values to bind to SQL parameters
+	/// - parameter block: A closure called for each result row
+	///
+	/// - throws: Any error thrown in `block` or an error if `sql` couldn't be compiled, `values` couldn't be bound, or the statement couldn't be executed
 	public func execute<S: Sequence, T: ParameterBindable>(sql: String, parameters values: S, _ block: ((_ row: Row) throws -> ())? = nil) throws where S.Iterator.Element == T? {
 		let statement = try prepare(sql: sql)
 		try statement.bind(parameters: values)
+		try statement.execute(block)
+	}
+
+	/// Executes `stmt` with *value* bound to SQL parameter *name* for each (*name*, *value*) in `parameters` and applies `block` to each result row.
+	///
+	/// - parameter sql: The SQL statement to execute
+	/// - parameter parameters: A sequence of name and value pairs to bind to SQL parameters
+	/// - parameter block: A closure called for each result row
+	///
+	/// - throws: Any error thrown in `block` or an error if `sql` couldn't be compiled, `parameters` couldn't be bound, or the statement couldn't be executed
+	public func execute<S: Sequence, T: ParameterBindable>(sql: String, parameters: S, _ block: ((_ row: Row) throws -> ())? = nil) throws where S.Iterator.Element == (String, T) {
+		let statement = try prepare(sql: sql)
+		try statement.bind(parameters: parameters)
 		try statement.execute(block)
 	}
 

				}
			}
			index += 1
		}
	}


	/// - parameter index: The index of the SQL parameter to bind
	///
	/// - throws: An error if `value` couldn't be bound
	public func bind<T: ParameterBindable>(value: T, toParameter index: Int) throws {
		let idx = Int32(index)
		try value.bind(to: stmt, parameter: idx)
	}

	/// Binds `value` to the SQL parameter at `index`.
	///
	/// - note: Parameter indexes are 1-based.  The leftmost parameter in a statement has index 1.
	///
	/// - requires: `index > 0`
	/// - requires: `index < parameterCount`
	///
	/// - parameter value: The desired value of the SQL parameter
	/// - parameter index: The index of the SQL parameter to bind
	///
	/// - throws: An error if `value` couldn't be bound
	public func bind<T: ParameterBindable>(value: T?, toParameter index: Int) throws {
		let idx = Int32(index)
		if let value = value {
