SQL 2016. Funkcja FORMATMESSAGE. O jakie to fajne!

20-Maj-2016

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

sql_2016_format_message

Dodaj komentarz:

Autor: Rafał Kraik