Also how do I grab the calling procs name. Its giving me my history procs name.
You are setting @ProcedureName to Object_Name(@@ProcID) when you are in the ExecutionHistory procedure...so it's giving you that procedure name.
Pretty sure you need another input parameter added to GetExecutionHistoryStart and then pass in the Object_Name(@@ProcID)
So in your test procedure:
ALTER PROCEDURE Test
AS
DECLARE @MainID INT
DECLARE @ProcName nvarchar(128)
SET @ProcName = Object_Name(@@ProcID)
EXEC GetExecutionHistoryStart'Start', @ProcName, @MainID OUTPUT
WAITFOR DELAY '00:01:10'
EXEC GetExecutionHistoryStart 'End', @ProcName, @MainID
Sue