Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

[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ć.

 

Opublikowane 18 stycznia 2008 12:38 przez brejk
Filed under: ,

Komentarze:

# re: Co warto wiedzieć o funkcji QUOTENAME

25 stycznia 2008 18:08 by dobrzak

A ten post to z wlasnego doswiadczenia :) ?

# re: Co warto wiedzieć o funkcji QUOTENAME

4 lutego 2008 07:17 by brejk

Tak, jeden z programistów w firmie użył w naszych generatorach kodu funkcji QUOTENAME do ujmowania opisów (rzadko, ale jednak czasem dłuższych niż 128 znaków) w apostrofy.

Komentarze anonimowe wyłączone

About brejk

MVP, MCT, SQL Server geek