I have created a database level role: NonBillingRole.
CREATE ROLE NonBillingRole
then granted it all access and revoked/denyed access of Billing table through following command:
REVOKE SELECT, INSERT, UPDATE, DELETE ON TblBilling TO NonBillingRole
DENY SELECT, INSERT, UPDATE, DELETE ON TblBilling TO NonBillingRole
Then I have added a user to this role.
This works fine if I directly tries to select or modify the table TblBilling. But the user can select and modify the table through any stored procedure.
My goal is to create a role that have all access to the database including executing the stored procedure but do not have direct or indirect access (even through stored procedure) to the table TblBilling.