 <p>The best way around this would be a redesign, if at all possible.</p> <p>You can even implement this retrospectively by adding a new column to replace the schema, for example: <code>Profile</code>, then merge all tables from each schema into one in a single schema (e.g. <code>dbo</code>).</p> <p>Then your procedure would appear as follows:</p> <pre><code>create procedure dbo.usp_GetDataFromTable1 @profile int, @userid bigint as begin select a.EmailID from dbo.Table1 a where a.ID = @user_id and a.Profile = @profile end </code></pre> <p>I have used an <code>int</code> for the profile column, but if you use a <code>varchar</code> you could even keep your schema name for the profile value, if that helps to make things clearer.</p>