01.sql
Első lépés, hogy létrehozunk egy adatbázist ProcedureTest névvel, melyet a bemutatandó példákhoz használunk.
02.sql
Szükségünk lesz egy táblára is néhány adattal.
create table Table01
(
value1 int,
value2 varchar(10),
)
...
03.sql
Tárolt eljárás létrehozásához a create procedure utasítást kell használnunk. Ezt követően adhatjuk meg az eljárás nevét, majd az AS szó után jöhet a T-SQL kód, hogy milyen tevékenységet végezzen el a létrehozott eljárás. Létrehozhatunk ún. lokálisan és globálisan használható ideiglenes eljárásokat is. A lokális csak a saját kapcsolatban használható, azt kívülről más nem fogja tudni használni. Ezzel szemben a globális eljárást más kapcsolatból is használhatják. A lokális változatok automatikusan törlésre kerülnek a kapcsolat lezárásával, míg a globális eljárások csak akkor, ha már minden kapcsolat lezárásra került.
Lokális ideiglenes eljárás létrehozásához az eljárás név elé tegyünk egy # karaktert, míg a globálisnál kettő ## karaktert.
create procedure Procedure01
as
select 'Hello World!'
04.sql
Próbaként futtatjuk is az imént létrehozott tárolt eljárást, melyhez az Execute parancsot használjuk, amelynek a futtatandó tárolt eljárás nevét kell megadnunk.
05.sql
Tárolt eljárásnak természetesen paramétereket is adhatunk. Ezt az eljárás neve után tehetjük meg egy vesszővel elválasztott felsorolásban. A paraméter név mindig egy @ jellel kezdődik. A név után a paraméter típusát adhatjuk meg. Ha olyan paramétert szeretnénk megadni, melyen keresztül értéket is adnánk vissza, akkor használjuk a típus megadása után az OUTPUT jelzőt.
Az alábbi példában szereplő tárolt eljárás összeadja a paraméterében kapott két számot és ennek eredményét jeleníti meg.
create procedure Procedure02
@a int,
@b int
as
select convert(varchar(20), @a + @b)
06.sql
Próbáljuk is ki az imént létrehozott eljárást.
execute Procedure02 150, 50
07.sql
Több eljárásnak adhatunk azonos nevet is. Ezek között úgy tudunk különbséget tenni, hogy a név után pontosvesszővel megadunk egy sorszámot. Ennek ott lesz legnagyobb előnye, hogy ha törölni akarjuk az eljárásokat a DROP PROCEDURE utasítással, akkor elegendő megadni az eljárás nevét és annak összes változata törlésre kerül. Ha tehát az alábbi Procedure03 eljárásnak több változata is van, akkor a DROP PROCEDURE Procedure03 utasítással egy lépésben törölhetjük az összest.
create procedure Procedure03;1
as
select min(value1) as 'Minimum value1', max(value1) as 'Maximum value1'
from Table01
08.sql
Próbáljuk is ki az imént létrehozott eljárást, a név után itt se felejtsük el megadni a sorszámot.
09.sql
Példánk befejezéseképp töröljük a létrehozott SystemFuncTest adatbázist.
use Master
DROP DATABASE ProcedureTest
select 'Adatbázis törölve'