C# - MS SQL tárolt eljárások

MS SQL tárolt eljárások 13. rész

forráskód letöltése
Ebben a részben két egymástól teljesen független témával foglalkozunk. Az elsőnek ismertetett eljárás lehetőséget ad arra, hogy különböző lekérdezéseket futtathassunk, és azoknak paramétereket adhassunk át. A második téma az adatbázis, illetve az adatbázisban található objektumok átnevezésének módszereit mutatja be. Természetesen mindkét feladatot MS SQL tárolt eljárásokkal oldjuk meg.
01_sp_executesql.sql: Paraméterezett lekérdezések futtatása tárolt eljárással
Felmerülhet a kérdés, hogy vajon mi szükség van arra, hogy egy lekérdezést tárolt eljárással futtassunk. Ennek elsősorban akkor vesszük hasznát, amikor egy SQL lekérdezést sokszor akarunk egymás után használni, vagy dinamikusan állítjuk össze. A lekérdezések beágyazott paramétereket tartalmazhatnak.
Az sp_executesql eljárás szintaxisa:
sp_executesql [@stmt =] stmt
[
    {, [@params =] N'@parameter_name  data_type [,...n]' }
    {, [@param1 =] 'value1' [,...n] }
]
Az eljárás paraméterei:
stmt
Ebben a paraméterben adhatjuk meg az SQL lekérdezést, ami akár több lekérdezést is tartalmazhat (kötegelt, vagy batch ). A megadható sztring hosszát az adatbázis szerver memóriája határozza meg.
A lekérdezés tartalmazhat paramétereket, amelyeket ugyanúgy adhatunk meg, mintha változók lennének:
select * from employees where Firstname like (@fname);
params
Ebben a sztring típusú paraméterben sorolhatjuk fel a lekérdezésben használt paraméterek nevét, típusát. Az egyes paramétereket vesszővel kell egymástól elválasztani. Ha a lekérdezésben nem használunk paramétereket, akkor ez a paraméter is elhagyható.
param1, param2, ...
A params paraméter után kell felsorolni a megadott paraméterek értékeit. Ezek lehetnek konstans értékek, vagy akár változók is.
exec sp_executesql „select * from employee where emp_id=@empid”, „@emp_id int”, 1234;
02_sp_renamedb.sql: Adatbázis átnevezése
Egy adatbázis szerveren több adatbázis is futhat, azonban mindegyik adatbázisnak egyedi névvel kell rendelkeznie. Az sp_renamedb eljárással megváltoztathatjuk egy adatbázis nevét, amennyiben ez szükséges.
sp_renamedb [ @dbname = ] 'old_name' , 
    [ @newname = ] 'new_name'
Paraméterei:
dbname
Az adatbázis jelenlegi neve.
newname
Az adatbázis új neve. A névnek követnie kell az azonosítókra vonatkozó szabályokat.
Csak a sysadmin és a dbcreator a jogosult az eljárás futtatására.
05_sp_rename.sql: Adatbázis objektumok átnevezése
Nem csak adatbázisokat, hanem az adatbázisban található, felhasználó által létrehozott objektumokat is átnevezhetjük. Erre szolgál az sp_rename tárolt eljárás. Ezt használhatjuk a táblák, oszlopok vagy felhasználói adattípusok átnevezésére.
sp_rename [ @objname = ] 'object_name' , 
    [ @newname = ] 'new_name' 
    [ , [ @objtype = ] 'object_type' ]
Paraméterei:
objname
Az átnevezendő objektum jelenlegi neve. Az objektum lehet tábla, nézet, oszlop, tárolt eljárás, trigger, alapérték, objektum vagy szabály. Ha az átnevezendő objektum egy tábla mezője (oszlopa), vagy indexe, akkor a tábla nevét is meg kell adni:
sp_rename @objname=Authors.au_lname ...
newname
Ebben a paraméterben adhatjuk meg az objektum új nevét az azonosítókra vonatkozó szabályok figyelembevételével.
objtype
Opcionális, max. 13 karakter hosszú sztring paraméter, amelyben az objektum típusát adhatjuk meg. A használható értékek az alábbi táblázatban láthatók:
Érték Leírás
COLUMN oszlopot nevezünk át
DATABASE felhasználó által létrehozott adatbázis nevezünk át. Ezt az opciót mindenképpen meg kell adni, ha adatbázist nevezünk át.
INDEX felhasználó által létrehozott indexet nevezünk át..
OBJECT egy rendszerobjektumot nevezünk át (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), táblák, nézetek, tárolt eljárások, stb.
USERDATATYPE felhasználó által létrehozott adattípust nevezünk át.

MS SQL tárolt eljárások cikksorozat