Od lat programiści byli przyzwyczajeni do przygotowania napisów do wyświetlenia w interfejsie użytkownika z wykorzystaniem SPRINT lub SPRINT-o podobnych funkcji. Właściwie taką właśnie funkcją była i jest RAISERROR. Można np. w taki sposób zgłosić informację o usunięciu rekordów:
RAISERROR(’%d records have been deleted from table %s’,10,1,12345,’app_log’)
Oczywiście najczęściej liczba 12345 i napis 'app_log’ byłyby tu postawiane dynamicznie przez wyliczone wcześniej zmienne.
Gorzej, jeśli chciałeś przygotować podobny napis, ale nie wyświetlać go od razu. Właściwie jedyne co pozostawało, to zwykła konkatenacja ze znakiem + i zabawa z CAST lub CONVERT jeżeli trzeba było połączyć napis z liczbą. I wiecie co? W Microsoft też to zauważyli. Od wersji 2016 dostajemy funkcję FORMATMESSAGE. Działa jak wspomniany wcześniej RAISERROR, ale nie wyświetla napisu, tylko go zwraca, więc można jej użyć w zapytaniach, czy funkcjach itp.:
DECLARE @rowsDeletedINT = 12345
DECLARE @message VARCHAR(1000)
SET @message = FORMATMESSAGE(’%d records have been deleted from database %s, @rowsDeleted, DB_NAME())
SELECT @message