[PL] Co warto wiedzieć o funkcji QUOTENAME
Pierwotnym przeznaczeniem funkcji systemowej QUOTENAME w SQL Server było otaczanie niestandardowych (czyli np. zawierających spacje) identyfikatorów (nazw) obiektów nawiasami kwadratowymi lub apostrofami. Oczywiście, z uwagi na to, że funkcja ta umożliwia podanie jako jeden z parametrów dowolnego znaku, QUOTENAME znalazł wiele innych zastosowań.
Warto jednak wiedzieć o tej funkcji, że jeżeli dostanie ona jako wartość pierwszego parametru napis dłuższy niż 128 znaków (maksymalna długość typu danych sysname - takiego typu jest pierwszy z parametrów funkcji), to zwraca wartość NULL. Przykład:
SELECT QUOTENAME(REPLICATE(N'a', 129)) -- wynik: NULL
Intuicja podpowiada, że w takiej sytuacji funkcja mogłaby zareagować nieco inaczej (obciąć nadmiarowe znaki napisu będącego wartością pierwszego parametru). Ale fakty mówią, że jest inaczej.
Ten przykład pokazuje, że należy sprawdzać w dokumentacji, jakich typów są parametry i wartości zwracane funkcji czy procedur. Brak wiedzy na temat typów wykorzystywanych w obiektach baz danych może doprowadzić do mniejszych lub większych katastrof, ponieważ nie zawsze będzie oczywistym, w którym miejscu kodu powstaje zdradliwa wartość NULL, której usilnie chcemy się pozbyć.