If you want to view data, in the database, adding the user to db_datareader will allow SELECT to run against tables and views. It will not permit EXECUTE for stored procedures.
If you database is in 90 compatibility mode (meaning SQL Server 2005), you can grant EXECUTE at the database or the schema level. It is recommended you do so at the schema. So if all of your objects are in the dbo schema, you would do the following:
GRANT EXECUTE ON SCHEMA::dbo TO Username
Keep in mind, though, that if your stored procedures modify data, they can now be executed. If the stored procedures were built using an ownership chaining model, that means they can modify data even if the user doesn't have INSERT, UPDATE, or DELETE rights against the base tables. That's actually the idea behind ownership chaining.
K. Brian Kelley
@kbriankelley