
A példához szükséges az OLEDB adatbázis, melyet a mellékelt Run_script.cmd BATCH állomány lefuttatásával hozhatunk létre. Az OLEDB.sql script 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A MS SQL Server rendelkezésünkre bocsát néhány rendszerfüggvényt, melyek segítségével elérhetők a programcsomag alkalmazásait reprezentáló COM-objektumok, példányosíthatjuk őket, meghívhatjuk metódusaikat, az eredményről pedig kapunk visszajelzést.
A példában a megadott szöveget átadjuk paraméterként az OLEDB.sql parancsállomány lefuttatása után az adatbázisba bekerült Checking tárolt eljárásnak, amely meghívja a létrehozott Word alkalmazás-példány CheckSpelling metódusát, amely leellenőrzi a kapott szöveget helyesírás szempontjából. Amennyiben a szöveg helytelen szavakat tartalmaz, akkor azt jelzi. A programban szabtunk egy határt a megadandó szöveg hosszának, ez 128 karakter.
A Word alkalmazás példányának eléréséhez a sp_OACreate rendszerfüggvényt használjuk, melynek szintaxisa a következő:
sp_OACreate progid | clsid,
objecttoken OUTPUT
[ , context ]
A függvény első paraméterében kell megadni a létrehozandó objektum-példány nevét, mely jelen esetben Word.Application. Amennyiben szükséges, használhatjuk a szerver objektum CLSID azonosítóját is, mely egy egyedi számsor.
A második paraméter egy, a tárolt eljárásban deklarált lokális változó, mely a művelet visszatérési értékeként fogható fel, később még fel kell használnunk.
A harmadik paraméter opcionális, a futtatás körülményeivel kapcsolatban adhatunk meg egy értéket. Lehetséges értékei:
- 1: az objektumpéldány futása processzen belüli, vagyis ekkor az SQL Server memóriaterületét és egyéb erőforrásait használhatja.
- 4: ebben az esetben a példány nem használhatja az SQL Server erőforrásait.
- 5: ebben az esetben mindkét futási forma engedélyezett.
Amennyiben nem adunk meg értéket, az 5 lesz az alapértelmezett.
Az objektum kívánt metódusának meghívásához használjuk a sp_OAMethod rendszerfüggvényt, mely a következő szintaxissal bír:
sp_OAMethod objecttoken,
methodname
[ , returnvalue OUTPUT ]
[ , [ @parametername = ] parameter [ OUTPUT ]
Paraméterei:
- OBJECTTOKEN: A metódus első paraméterében kell megadjuk azt az értéket, melyet a létrehozás metódusában második paraméterként megkaptunk.
- METHODNAME: A második paraméterben adjuk meg a metódus nevét, jelen esetben CheckSpelling nevet.
- RETURNVALUE: A harmadik paraméter tartalmazza a függvény meghívásának visszatérési értékét, mely jelezni fogja, hogy a metódus hibátlan, vagy hibás szöveget ellenőrzött. A változó egy lokálisan deklarált változó.
- PARAMETERNAME: A negyedik paraméter tartalmazza a meghívandó metódus lehetséges paramétereit, az OUT módú paramétereket is. Ez példánkban az ellenőrzendő szöveg lesz.
Az objektum-példány megszüntetésére használjuk a sp_OADestroy rendszerfüggvényt, a következő szintaxissal:
A függvény egy paramétert vár, ami nem más, mint az objektum létrehozásakor kapott referencia.
Ezek ismeretében lássuk, hogyan is épül fel a tárolt eljárás. Kezdenünk kell azzal, hogy deklarálunk néhány lokális változót:
create procedure Checking (@Word varchar(128), @Out int output) as
DECLARE @Token int
DECLARE @Hresult int
DECLARE @Showresult bit
DECLARE @Result int
A következő lépés a Word.Application objektum létrehozása.
EXEC @Hresult = sp_OACreate 'Word.Application', @Token OUT
Ezt követően meghívjuk a CheckSpelling metódust a megadott szöveggel.
EXEC @Hresult = sp_OAMethod @Token, 'CheckSpelling', @Showresult OUT, @Word
Végül megszüntetjük az objektumot.
EXEC @Hresult = sp_OADestroy @Token
Amennyiben a metódushívások eredménye nem megfelelő, vagyis a @Hresult változó értéke nulla, akkor a tárolt eljárásunk az @Out paraméterben 1 értékkel tér vissza.
IF @Hresult <> 0
BEGIN
SET @Result = 1
END
Amennyiben a szöveg hibátlan, vagyis a @Showresult változó értéke 1, akkor a tárolt eljárásunk az @Out paraméterben 0 értékkel tér vissza, egyébként 2 értékkel.
IF @Showresult = 1
BEGIN
SET @Result = 0
END
ELSE BEGIN
SET @Result = 2
END
SET @Out = @Result
GO