Hey,
You need to execute the below set of command:
GRANT create table TO [login];
GRANT create view TO [login];
GRANT create Procedure TO [login];
GRANT alter
ON SCHEMA::[schema] TO [login];
GRANT SELECT
ON SCHEMA::[schema] TO [login];
GRANT INSERT
ON SCHEMA::[schema] TO [login];
GRANT UPDATE
ON SCHEMA::[schema] TO [login];
GRANT DELETE
ON SCHEMA::[schema] TO [login];
GRANT EXECUTE
ON SCHEMA::[schema] TO [login];
Note :The CREATE TABLE is granted at the DB level and you grant the ALTER at the schema level. The combination of the 2 permissions will allow a user to actually create a table in the schema.
Also make sure :
Alter AUTHORIZATION ON SCHEMA::<<schemaname>> TO <<login>>;
so that dbo is not the default authorization