queryDef.execute executes the SQL statement that is associated with the queryDef. The number of affected records is returned by its recordsAffected property.
The execute method of queryDef executes the SQL statement that is associated with the respective queryDef object.
IMHO, execute should always be used together with the dbFailOnError option.