• Just my thought on this article...

    Why do we need a begin transaction statement at the start of the procedure USP_Business_Process. Everytime the sub-procedure : USP_Get_Value_For_Key is called, it will always have a unique value.

    So, the statement : BEGIN TRANSACTION Business_Process, should be after the call to the procedure USP_Get_Value_For_Key.

    i.e after the statement : SELECT @val -- Print key value for display,

    in the procedure: USP_Business_Process.

    This way there will be no blocking issue for the table: tbl_kvp

    Haven't tested this but think this should work.