C> IF (@TranCount = 0)
C> BEGIN TRAN @TranName
C> ELSE
C> SAVE TRAN @TranName
Зачем использовать вложенные транзакции?
На грабли с ними не наступали?
Локализованные сообщения из хранимой тоже как-то странно IMHO смотрятся.
Нельзя их на уровне клиента локализовывать?
Код
C> IF (@TranCount = 0)
C> COMMIT TRAN @TranName
вводит в заблуждение .. не сразу соображаешь что там один @.
Общее впечатление:
Хранимает делает 1 insert, а коду просто немеряно. Хотя конечно разработчик

попытался застраховаться
от ошибок
Удачи,
SOf