Not a simple yes/no thing from my point of view. It might depend on the database you are using and on the quality of the ODBC driver. I would not expect larger performance differencies.
A stored procedure will give you more possibilities e.g. different SQL statements based on a passed in parameter and probably easier maintenance because the logic is in your DB environment.
What I prefer is to use a view to get the data, this way you can create a rather simple LOAD statement in QlikView, have the control in the DB and can also limit the access rights easily.