Реализация пользовательской обработки ошибок в вашей кодировке T-SQL, на мой взгляд, хорошая, но не существенная практика.
Если хранимая процедура / функция, которую вы хотите разработать, является частью среднего уровня приложений, то я бы порекомендовал вам реализовать собственную обработку ошибок.
Под этим я подразумеваю, что вы должны вызывать ошибки, характерные для обстоятельств, создаваемых процессами ваших приложений, и регистрировать их в общей таблице журнала ошибок в соответствующей базе данных.
Пример того, как сделать это и включить его в типичный блок try catch, можно найти в электронной документации по SQL Server.
В частности, раздел под названием: Решение для обработки ошибок в базе данных Adventure Works
http://msdn.microsoft.com/en-us/library/ms179296(SQL.90).aspx