SQL Deadlocks - Same Stored Procedure Called Concurrently
Is there a good method or pattern to have the 2nd call wait until the 1st is finished before continuing with its lookups?


The easiest way to have a block of code that can be run by only one session at a time is to use an Application Lock.  You can use SQL Server's locking engine, but instead of locking a specific row, page, or table, you create a lock with a custom name.  eg

begin transaction;

--begin exclusive section
exec sp_getapplock @Resource = 'Get_Data Exclusive Lock', @LockMode = 'Exclusive';  

--do stuff in only one session

--end exclusive section
exec sp_releaseapplock @Resource = 'Get_Data Exclusive Lock';  


commit transaction;