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