Delphi - SET parancsok

Transact SQL 28. rész

forráskód letöltése
Az MS SQL-ben különböző beállításokat módosíthatunk a SET parancsokkal. Ebben a részben ezek közül a leggyakrabban használt parancsokat nézzük meg. Megvizsgáljuk, hogy hogyan tudjuk beállítani az adatbázis nyelvét (ami hatással van például a dátumok megjelenítésére), a dátum formátumot, a NULL értékű szöveges adatok összefűzésének eredményét befolyásoló kapcsolót, a lekérdezés által visszaadott sorok maximális számát, a hosszú szöveges mezők maximális méretét, stb.
SET LANGUAGE <név>
Ezzel a paranccsal kiválaszthatjuk a használandó nyelvet. A használható nyelveket a syslanguages tábla tartalmazza. Ennek a táblának az alias mezőjében lévő nevet kell megadni a <név> paraméterként. A használt nyelv meghatározza a dátum formátumot, a hét első napjának számát (1 vagy 7), a hónapok teljes és rövidített neveit, valamint a napok neveit.
A magyar nyelv kiválasztása a következőképpen történhet:
SET LANGUAGE magyar;
SET DATEFIRST
Ezzel a paranccsal megadhatjuk, hogy a hét melyik napja számít a hét első napjának. A hétfő értéke 1, a vasárnapé 7. Ha tehát azt szeretnénk, hogy a hétfő számítson egy hét első napjának, akkor a következő parancsot kell kiadnunk:
SET DATEFIRST 1
SET DATEFORMAT <formátum>
Ezzel a paranccsal a dátum formátumot adhatjuk meg. A dátum formátum nem fogja befolyásolni a dátumok megjelenítését a lekérdezésekben, de a dátumok megadásánál ezt kell figyelembe vennünk. A formátum egy három karakteres sztring, amely az „y” (év), „m” (hónap) és „d” (nap) betűket tartalmazhatja bármilyen sorrendben. Az alábbi példában a dátum formátumot úgy állítjuk be, hogy a dátumot év/hónap/nap sorrendben lehessen megadni:
SET DATEFORMAT ymd;
DECLARE @datum DATETIME;
SET @datum = '2002/12/31';
SET CONCAT_NULL_YIELDS_NULL <ON/OFF>
Ezzel a paranccsal azt adhatjuk meg, hogy szöveges adatok összefűzésénél mi történjen, ha az egyik adat érték NULL. Ha paraméterként az ON-t adjuk meg, akkor az eredmény NULL lesz abban az esetben, ha valamelyik összefűzendő adat értéke NULL. Ha az OFF-ot adjuk meg, akkor a NULL értékű sztringeket üres sztringként értelmezi, és az eredmény is ennek megfelelően alakul.
SET NOCOUNT <ON/OFF>
Amikor az SQL Query Analyzer-ben futtatunk egy SELECT lekérdezést, vagy UPDATE, INSERT vagy DELETE utasítást, akkor a Messages ablakban megjelenik egy üzenet, hogy a művelet hány rekordot érintett. Ha a paraméter ON, akkor ez az üzenet nem jelenik meg.
SET NOEXEC <ON/OFF>
Ha a kapcsoló be van kapcsolva (ON), akkor a lekérdezést lefordítja, de nem fogja futtatni. Ezt akkor használhatjuk ki jól, ha egy hosszabb kötegelt lekérdezést (script-et) írunk, és közben ellenőrizni akarjuk, hogy a szintaxisban nem vétettünk-e hibát.
SET NUMERICROUNDABORT <ON/OFF>
Ha a kapcsoló értéke ON, akkor a lekérdezéseknél, módosításoknál hibát okoz az, ha egy matematikai művelet eredménye nem lesz pontos a szükségszerű kerekítések miatt (pl. az adattípus miatt).
A kapcsolót ki kell kapcsolni (OFF) akkor, ha indexeket hozunk létre vagy módosítunk.
SET PARSEONLY <ON/OFF>
Ha a kapcsoló be van kapcsolva (ON), akkor ellenőrzi az SQL script szintaktikáját és ha hibát talál akkor azt közli, de mindezt anélkül teszi meg, hogy lefordítaná és futtatná a lekérdezést.
SET ROWCOUNT <number>
Ezzel a paranccsal megadhatjuk, hogy a lekérdezések hány sor feldolgozása után álljanak le automatikusan. Ezzel tulajdonképpen a TOP kulcsszót helyettesíthetjük.
Ha ki akarjuk kapcsolni a korlátozást, akkor a SET ROWCOUNT 0 parancsot kell kiadnunk.
SET TEXTSIZE <size>
Hosszú szöveges mezőknél ezzel a paranccsal korlátozhatjuk a lekérdezett szövegek maximális hosszát. Ha a mezőben lévő adat túllépné a megadott hosszt, akkor a „kilógó” részt egyszerűen levágja. A korlátozás csak a text típusú mezőknél érvényes.
A parancs hatásának megszüntetéséhez a SET TEXTSIZE 0 parancsot kell kiadni.

Transact SQL cikksorozat