tárolt eljárások
Tárolt eljárás - ez a leggyakrabban használt program szerkezete adatbázisok, amelyet arra terveztek, különleges módon a script (vagy inkább a csomag), amely az adatbázisban tárolt helyett egy külön fájlban. A tárolt eljárások eltérnek a forgatókönyvet, hogy használhatják a bemeneti és kimeneti paraméterek és visszatérési értékek, amelyeket nem is lehet használni a szokásos forgatókönyv.
A tárolt eljárás egyszerűen egy név a szoftverrel kapcsolatos T-SQL-kódot, amely tárolja és a kiszolgálón fut. Ez tartalmazhat szinte bármilyen tervezési vagy utasításokat, amelynek végrehajtását támogatja az SQL Server. Az eljárásokat lehet használni, hogy változtatni az adatokat, visszatérő skalárnak vagy teljes eredmény meg. A tárolt eljárások az elsődleges felület kell alkalmazások által használt bármely adat elérését az adatbázisokban. A tárolt eljárások nem csak ellenőrzik a hozzáférést az adatbázishoz, hanem elkülöníteni az adatbázis kódot, hogy egyszerűsítse a karbantartást.
Mivel szerver szoftver tárolt eljárások számos előnye van.
• A tárolt eljárások vannak tárolva összeállított formában, így gyorsabban fut, mint a csomagokat, illetve kéri.
• feldolgozást végző a szerver helyett a munkaállomás, jelentősen csökkenti a hálózat terhelését.
• A tárolt eljárások moduláris megjelenés, így azok könnyen megvalósítható és módosítani. Ha a kliens alkalmazás meghív egy tárolt eljárást végrehajtani egy műveletet, a módosítási eljárások egy helyen érinti annak teljesítményét minden felhasználó számára.
• A tárolt eljárások lehet tekinteni, mint egy fontos adatbázis biztonsági elem. Ha az összes kapcsolódó ügyfelek az adatokat a tárolt eljárások, a közvetlen hozzáférést biztosít a táblázatok letiltható, és minden felhasználó akciói lesz ellenőrzés alatt. Ennél is fontosabb, a tárolt eljárások elrejteni a felhasználói adatbázis szerkezetét, és lehetővé teszi neki, hogy csak azokat azokat a műveleteket, amelyek úgy vannak programozva a tárolt eljárás.
Kezelése tárolt eljárások
A tárolt eljárások által ellenőrzött adatok meghatározása nyelv utasításait (DDL) CREATE, ALTER és DROP.
Közös kód T-SQL szintaxis, hogy hozzon létre egy tárolt eljárás a következő:
CREATE PROC | ELJÁRÁS
[ <@parameter>
[BEGIN]
A szerkezet a szolgáltató megfelel az alapvető szintaxis CREATE
Mindkét eljárás belül egyedinek kell lennie az adatbázis nevét (eljárás_neve), amely megfelel a vonatkozó szabályok azonosítókat.
Eljárások tetszőleges számú bemeneti paraméterek (@parametr) adattípusok (data_type), amelyeket az eljárásban, mint lokális változók. Amikor eljárás végrehajtása az egyes deklarált formális paramétereknek a tényleges értékeket kell továbbítani. Alternatív módon, egy alapértelmezett értéket (alapértelmezett) lehet meghatározni a bemeneti paraméter, amely kell egy állandó, vagy egyenlő NULL. Ebben az esetben, az eljárás végezhető meghatározása nélkül az érték a megfelelő argumentum. Használata egy adott esetben bemeneti paraméterek.
Az is lehetséges, hogy a kimeneti paraméterek (jelölt kimenet), amely lehetővé teszi a tárolt eljárás, hogy visszatérjen az egy vagy több skalár értékeket a szubrutin, ahonnan hívták. Amikor létrehoz egy eljárást, megadhatja három paramétert. Amikor létrehoz egy eljárást egy paraméter ENCRYPTION SQL Server titkosítja az azonosítási eljárást. Ha az SQL Server újrafordítod fordítunk újra a tárolt eljárást minden alkalommal, amikor futtatni. Hajtják végre az a paraméter határozza meg a biztonsági környezetet az eljárást.
A meghatározás a tárolt eljárások a kulcsszó után AS kell hozni közvetlenül eljárás test (sql_statements) egy-egy kódot egy vagy több T-SQL nyelv utasításait.
DROP nyilatkozat törli a tárolt eljárást az adatbázisból. ALTER nyilatkozat nem módosítja a teljes tárolt eljárást. Ahhoz, hogy a módosítások alkalmazása előnyös az ALTER nyilatkozatot, és nem pedig egy eltávolítási utasításokat és a teremtés, mint az utóbbi módszer eltávolítja engedélyeket.
Példa tárolt eljárás paraméterek nélkül
CREATE ELJÁRÁS spr_getOrders
SELECT IdOrd, IdCust, OrdDate
Ahhoz, hogy teszteljék az új eljárást, megnyit egy új lekérdezést SQL Server és végrehajtja a következő kódot.
Parancs végrehajtása vagy rövidített EXEC végrehajtja a tárolt eljárást.
Alkalmazása bemeneti paraméterek
A tárolt eljárás rendelkezik bizonyos eljárási lehetőségek (és ha alkalmazzák a .NET infrastruktúra, az ilyen lehetőségek nagyon jelentős), valamint javított teljesítményt, de a legtöbb esetben a tárolt eljárás nem teszi lehetővé, ha nem is lehetőséget biztosított, hogy neki néhány adat azt jelzi, hogy milyen intézkedéseket kell tenni vele. Különösen a fő probléma az előző tárolt eljárás (spr_getOrders), akkor a statikus. Ha a felhasználóknak meg kell rendelni információ más ideig, akkor ez az eljárás nem segít nekik. Ezért szükséges, hogy az átadásának lehetősége bele a megfelelő bemeneti paraméterek, ami dinamikusan változik a mintavételi időszakban.
@parameter_name [AS] adattípus [= default | NULL]
A következő példában, a tárolt eljárás spr_getOrders egészíti két bemeneti paraméterek, amelyek lehetővé teszik, hogy határozza meg kifejezetten a mintavételi periódus.
ALTER ELJÁRÁS [dbo]. [Spr_getOrders]
@Description = N'Novy áruk
@IdProd = @IdProd OUTPUT
SELECT @IdProd például N '@ IdProd'
Vegye figyelembe, hogy az értékeket minden paraméter nem teljesítette az eljárás hívást. Instock paraméter opcionális, mivel az alapértelmezett beállítás formájában nulla, amely felhasználható, ha nem adják meg kifejezetten mást jelentenek neki. Így, ha a hívást a tárolt eljárást és az átviteli értékek segítségével történik pozicionális paramétereket, akkor kell kitölteni minden helyzetben a paraméter listában, legalábbis mielőtt ez utóbbi felel meg paramétert, amelynek az értéke meg kell adni.
Megerősítése a sikeres vagy sikertelen a munka befejezésekor a visszatérési értékeket. Egy RETURN parancsot.
Bármilyen okozott, hogy végre egy tárolt eljárás egy értéket ad vissza, függetlenül attól, hogy a visszatérési értéket adni. Alapértelmezésben sikeres befejezése után az SQL Server adatbázis eljárások automatikusan visszatér a nulla értéket.
Hogy nyújtson be egy visszatérési értéke a tárolt eljárás vissza a hívó kód, elegendő alkalmazni a return:
RETURN [<Целое число>]
Figyeljük meg, hogy a visszatérési érték mindig egész szám lehet.
Az értékek visszaadása a célja csupán annak jelzésére sikere vagy kudarca a tárolt eljárás, és lehetővé teszi még, hogy kijelölje a fokú és jellegű a siker vagy kudarc. A visszatérési érték, hogy visszatérjen a tényleges adatok, mint az azonosító értékét vagy adatokat az érintett sorok száma tárolt eljárás tekinthető érvénytelennek programozási gyakorlat. A visszatérési értéke 0 jelzi a sikeres végrehajtását az eljárást, és az alapértelmezett beállítás. A Microsoft fenntartva az értékeket -99 -1 csak belső használatra. A fejlesztők a visszatérő hiba állapot a felhasználót arra, hogy használja az értékek -100 vagy kevesebb.
Az egyik legfontosabb jellemzője a visszatérő állítás, hogy annak végrehajtása vezet feltétlen megszűnése és kilép a tárolt eljárás. Ez azt jelenti, hogy függetlenül attól, hogy hol található a return a kódot egy tárolt eljárást, miután a teljesítmény már nem lesz végrehajtható akár egyetlen kódsort. Kevesebb abszolút shutdown azt jelentette, hogy a hatás az üzemeltető által RETURN végzett függetlenül attól, hogy a kód azt érzékeli. Másrészt, a tolerancia a tárolt kód az eljárás több operátorok és végrehajtásához, ezek a szolgáltatók következhet be, ha ez vezet a hagyományos szerkezet a kód folyamatot.
Az előző példában, amikor megpróbálja felvenni a táblázat Termék információ az új terméket egy név többször hibának lehetne, mert a név az áru szervezett különleges megszorítás. Hosszabbítsa meg a tárolt eljárás spr_addProduct, amely előzetes ellenőrzése a rendelkezésre álló ez a termék az adatbázisban, és jelzi a művelet sikerét át a kimeneti paraméter.
ALTER ELJÁRÁS [dbo]. [Spr_addProduct]
Gyakorlatok: Készítsen tárolt eljárások esetén, amelyek a következők:
• Visszatérés egy listát az összes megrendelést tartalmazó adott termék esetében (IdProd).
• meghatározása a fogyasztók száma, akik nem rendelkeznek semmilyen utasítást. Az eredmény vissza kell keresztül kimeneti paraméter.
• eltávolítása tárol információt egy adott ügyfél (a IdCust). Ha ez a kliensnek kapcsolódó bejegyzések (megbízások) eltávolítását meg kell szüntetni. A visszatérési érték meg kell határoznia a művelet sikerét.
SET ON ANSI_NULLS
SET ON QUOTED_IDENTIFIER
ALTER ELJÁRÁS [dbo]. [Spr_getOrder]
SELECT CodeGoods, CodeType, Categori, Mark, Ár