Delphi - Adatbázis objektumok speciális tulajdonságainak lekérdezése

forráskód letöltése
Ha például létrehozunk egy MS SQL táblát és minden oszlopához egy-egy leírást (Description) is megadunk, akkor felmerül a kérdés, hogy az ide beírt adatok miként érhetők el programból. Természetesen nem csak ennek a tulajdonságnak az értéke érhető el, hanem bármely más megadott adat is, sőt akár saját, egyedi tulajdonságokat is létrehozhatunk az egyes objektumokhoz, melyeknek tetszőleges értéket adhatunk.
A mellékelt példa indítása előtt hozza létre az ExtendedProperty adatbázist, melyhez futtassa le a mellékelt CreateDatabase.sql-t.
A megoldás előtt szükségünk lesz egy táblára, melynek Description tulajdonságait is feltöltöttük értékkel. A példánkban lévő Table1 táblának három char típusú mezője van, melynél minden esetben a Description tulajdonság is kitöltésre került.
Adott egy rendszer függvény, mely fn_listextendedproperty névre hallgat. Ezzel a függvénnyel képesek vagyunk lekérdezni a számunkra érdekes tulajdonságokat.
A függvény több paramétert is vár, nézzük ezeket sorra:
  • A tulajdonság neve. Alapértelmezett érték esetén használhatjuk a default kulcsszót, vagy ha nem akarjuk megadni ezt a paramétert, akkor a NULL-t.
  • A második paraméter lehetséges értékei: USER, TYPE, default és a NULL értéke. Itt adhatjuk meg a nulladik szint típusát.
  • A nulladik szint megnevezése. Alapértelmezett érték esetén használhatjuk a default kulcsszót, vagy ha nem akarjuk megadni ezt a paramétert, akkor a NULL-t.
  • Az első szint típusa, melyben az adatbázis objektum típusát adhatjuk meg. Ennek lehetséges értékei a következők: TABLE, VIEW, PROCEDURE, FUNCTION, DEFAULT, RULE, default és a NULL.
  • Az első szint megnevezése. Alapértelmezett érték esetén használhatjuk a default kulcsszót, vagy ha nem akarjuk megadni ezt a paramétert, akkor a NULL-t.
  • A második szint típusa. Ennek lehetséges értékei a következők: COLUMN, PARAMETER, INDEX, CONSTRAINT, TRIGGER, DEFAULT, default és a NULL.
  • A második szint megnevezése. Alapértelmezett érték esetén használhatjuk a default kulcsszót, vagy ha nem akarjuk megadni ezt a paramétert, akkor a NULL-t.
Eredményül a függvény egy táblát ad vissza, melynek az alábbi a szerkezete:
Oszlop neve Adat típusa Leírás
objtype sysname Objektum típusa
objname sysname Objektum neve
name sysname Tulajdonság neve
value sql_variant Tulajdonság értéke
Mellékelt példánkban a cél az volt, hogy a létrehozott dbo tulajdonában lévő Table1 táblának oszlopaihoz tartozó leírásokat szerezzük meg. Ehhez az alábbi paraméterekkel kell meghívnunk a rendszer függvényt:
SELECT * FROM ::fn_listextendedproperty('MS_Description', 'USER', 'dbo', 'table', 'Table1', 'column', default)
Mivel itt nem saját tulajdonságról van szó, hanem egy beépített, minden táblánál meglévő tulajdonságról, így ennek a neve MS_Description lesz. Ezt követően megadjuk, hogy a dbo felhasználó, Table1 nevű tábláját szeretnénk elérni, ezen belül is az oszlopokat.