Итак, я пишу хранимую процедуру SQL Server 2008 (сценарий обслуживания).
При этом, будучи хорошим мальчиком, я много обрабатывал ошибки, проверял количество строк, печатал выходные сообщения и т. д.
Но при этом я ловил себя на том, что снова и снова пишу что-то вроде этого:
SELECT @RowsAffected = @@ROWCOUNT
IF @RowsAffected > 0
BEGIN
PRINT CAST(@RowsAffected, NVARCHAR(2)) + 'rows updated.'
END
Или отладочные сообщения, подобные этому:
PRINT 'User ' + CAST(@UserId AS NVARCHAR(5)) + ' modified successfully'
Есть ли способ создать своего рода «подпрограмму» внутри хранимой процедуры (например, частный метод), которая может принимать что-то в качестве параметра (хотя это и не обязательно) и выполнять некоторую логику?
Я хочу иметь возможность сделать что-то вроде этого:
CheckRowCounts
Или это:
PrintUserUpatedMessage(@UserId)
Что затем будет выполнять указанную выше логику (проверить количество строк, распечатать сообщение и т.д.)
И да, очевидно, я могу создать UDF, но тогда мне нужно будет создать/удалить его и т. д., поскольку эта логика требуется только на время выполнения этой хранимой процедуры.
Меня тошнит от написания одного и того же кода снова и снова и изменения всех различных областей, которые я использовал, когда получаю сообщение об ошибке =)
Кто-нибудь может помочь?
ИЗМЕНИТЬ
Хорошо, поэтому я создал скалярную функцию UDF (кажется, единственный способ).
Тем не менее, я наградил Фредрика правильным ответом, так как, хотя я не планирую это реализовывать, это одновременно и правильный ответ, и творческий.
Спасибо за все советы/помощь.