az internet ablakok Android

Milyen eljárások vannak az adatbázisban. Tárolt eljárások az MS SQL Server MS-ben

A munka célja - Ismerje meg, hogyan lehet létrehozni és használni a tárolt eljárásokat az adatbázis-kiszolgálón.

1. Az összes példa tanulmányozása, végrehajtásuk eredményeinek elemzése az SQL Server Management Studio segédprogramban. A létrehozott folyamatok jelenlétének ellenőrzése az aktuális adatbázisban.

2. Végezze el az összes példát és feladatot a laboratóriumi munka során.

3. Végezze el az egyes feladatokat az opciók szerint.

A munka magyarázata

A programozás tárolt eljárásainak elsajátításához használja az adatbázis adatait Db_books.amely az 1. laboratóriumi munkában jött létre. Példák és feladatok elvégzése során fizessen az adatbázisok, táblázatok és egyéb projektobjektumok nevét.

Tárolt eljárások Vannak olyan parancsok, amelyek egy vagy több SQL vagy funkciót tartalmazó operátorokból állnak, és az adatbázisban tárolják az összeállítási űrlapon.

A tárolt eljárások típusai

A rendszer tárolt eljárásai különböző adminisztratív intézkedéseket kell végrehajtaniuk. Szinte minden kiszolgálói adminisztrációs művelet a segítségükkel történik. Azt lehet mondani, hogy a rendszer tárolt eljárásai olyan interfész, amely a rendszertáblákkal foglalkozik. A rendszer tárolt eljárásai az SP_ előtagot tartalmazzák, a rendszer adatbázisában tárolják, és bármely más adatbázis összefüggésében is okozhatják.

Egyéni tárolt eljárások bizonyos műveleteket hajtanak végre. Tárolt eljárások - teljes körű adatbázis objektum. Ennek eredményeképpen minden tárolt eljárás egy adott adatbázisban található, ahol végrehajtásra kerül.

Az ideiglenes tárolt eljárások csak egy ideig léteznek, majd a kiszolgáló automatikusan megsemmisítik őket. Losal és globális. A helyi ideiglenes tárolt eljárások csak az adott vegyületből származhatnak, amelyben létrejön. Egy ilyen eljárás létrehozásakor egy nevet kell adnia egy szimbólumból. Az összes ideiglenes objektumhoz hasonlóan az ilyen típusú tárolt eljárások automatikusan törlődnek, ha a felhasználó le van kapcsolva, indítsa újra vagy állítsa le a kiszolgálót. A globális ideiglenes tárolt eljárások bármely olyan kiszolgálócsatlakozásra állnak rendelkezésre, amelyeken ugyanaz az eljárás van. Annak meghatározásához, hogy elegendő, hogy a ## karakterekkel kezdődő nevet adjon. Ezeket az eljárásokat a kiszolgáló újraindításakor vagy leállításánál törli, valamint a kapcsolat bezárásakor, amelynek összefüggésében létrehozták őket.

A tárolt eljárások létrehozása, megváltoztatása

A tárolt eljárás megteremtése magában foglalja a következő árak döntését: a hozzáférési jogok tervezése. A tárolt eljárás létrehozásakor szem előtt kell tartani, hogy ugyanaz a hozzáférési jogok lesznek az adatbázis-objektumokhoz, amelyek létrehozták a felhasználót; A tárolási eljárások paramétereinek meghatározása, a tárolt eljárások bemeneti és kimeneti paraméterekkel rendelkezhetnek; A kódtárolt eljárás fejlesztése. Az eljáráskód tartalmazhat bármely SQL parancssori sorozatot, beleértve a többi tárolt eljárásokat.

Az üzemeltető új vagy a rendelkezésre álló tárolt eljárás létrehozása az MS SQL Server megnevezésekben:

(Create | Alter) Proc [Edure] Name_name [; szám] [(@ paraméter_name type_data) [változó] [\u003d alapértelmezett] [kimenet]] [, ... N] [(RECOBRYPTION | RECRISTICE)] [Replikáció] mint SQL_ operátor [... n]

Tekintsük a parancs paramétereit.

Az SP_, #, ## az eljárás által létrehozott előtagok segítségével szisztémás vagy ideiglenes lehet. Amint a parancs szintaxisából látható, nem adhatja meg a tulajdonos nevét, amelyhez az eljárás létrehozása, valamint az adatbázis neve, ahol meg kell helyezni. Így a létrehozott tárolt eljárás egy adott adatbázisba történő elhelyezéséhez az adatbázis keretében meg kell futtatnia a létrehozása parancsot. Ha a tárolt eljárás testét az azonos adatbázis objektumaihoz kapcsolja, rövidített neveket használhat, azaz az adatbázis nevének megadása nélkül. Ha más adatbázisokban található objektumokra kell hivatkoznia, az adatbázis neve meg kell adnia.

Átadni a bemeneti és kimeneti adatokat a létrehozott tárolt eljárást, a paraméter neveket kell kezdeni a @ jelet. Egy tárolt eljárásban számos paramétert állíthat be vesszővel elválasztva. Az eljárás testében a helyi változókat nem szabad alkalmazni, amelyek nevét egybeesnek az eljárás paramétereinek nevével. A tárolt eljárás ezen paramétereinek típusának meghatározásához minden SQL adattípus megfelelő, beleértve a felhasználó által definiált. A kurzor adattípusa azonban csak a tárolt eljárás kimeneti paramétere, azaz A kulcsszó kimenetével.

A kimeneti kulcsszó jelenléte azt jelenti, hogy a megfelelő paraméter úgy van kialakítva, hogy adatokat adjon vissza a tárolt eljárásból. Ez azonban nem jelenti azt, hogy a paraméter nem alkalmas az értékek átvitelére a tárolt eljárásban. A kimeneti kulcsszó megadása arra utasítja a kiszolgálót, amikor kilép a tárolt eljárással, hogy hozzárendelje a helyi változó paraméter aktuális értékét, amelyet az eljárás paraméterértéknek neveznek. Ne feledje, hogy a kulcsszó kimenetének megadásakor a megfelelő paraméter értékét az eljárás hívásakor csak helyi változó segítségével lehet megadni. Nem szabad használni a hagyományos paraméterekre megengedett kifejezéseket vagy konstansokat. A változó kulcsszót a kurzor típusú kimeneti paraméterrel együtt használják. Meghatározza, hogy a kimeneti paraméter lesz az eredményül kapott készlet.

Az alapértelmezett kulcsszó olyan érték, amely elfogadja a megfelelő alapértelmezett paramétert. Így az eljárás megnevezésekor nem adhatja meg a megfelelő paraméter értékét.

Mivel a kiszolgáló gyorsítótárazja a lekérdezési végrehajtási tervet és összeállította a kódot, későbbi felhívás esetén az eljárások már készen állnak. Bizonyos esetekben azonban még mindig szükség van az eljárás kódexének leküzdésére. A kulcsszó újrafeldolgozása előírja a rendszert, hogy hozzon létre egy tárolt eljárási tervet minden híváshoz.

A replikációs paraméter iránti kereslet az adatok reprodukálásakor és a létrehozott tárolt eljárásnak a közzétételre való felvételére. A titkosítási kulcsszó utasítja a kiszolgálót, hogy titkosítsa a tárolt eljárás kódját, amely védelmet nyújthat a Copyright algoritmusok használatával, amelyek végrehajtják a tárolt eljárás munkáját. A kulcsszó, mint a tárolt eljárás testének elején található. Az eljárás testében szinte minden SQL parancsot lehet alkalmazni, kijelölt tranzakciók, blokkolja a zárat, és hívja más tárolt eljárásokat. A tárolt eljárás kimenete a visszatérési parancs segítségével történhet.

A tárolt eljárás eltávolítása

Drop eljárás (név) [, ... N]

Tárolt eljárás végrehajtása

A tárolt eljárás végrehajtásához a parancsot használják: [[EXEC [UTE] NAME_NAME [; szám] [[@ paraméter_name \u003d] (érték | @_name_name) [kimenet] [Alapértelmezett]] [, ... N]

Ha a tárolt eljárás hívása nem az egyetlen parancs a csomagban, akkor a végrehajtási parancs jelenléte szükséges. Ezenkívül ez a parancsnak meg kell adnia az eljárást egy másik eljárás vagy trigger testéből.

A kimeneti kulcsszó használata az eljárás meghívásakor csak azokat a paramétereket oldja meg, amelyeket bejelentett, amikor egy kulcsszóval ellátott eljárás létrehozásakor jelentkezett meg.

Amikor egy eljárás meghívása esetén az alapértelmezett kulcsszó megadódik a paraméterhez, az alapértelmezett értéket használjuk. Lényegében a megadott szó alapértelmezett csak olyan paraméterek esetében engedélyezett, amelyekre az alapértelmezett érték definiálva van.

A végrehajtási parancs szintaxisából világos, hogy a paraméternevek elhagyhatók, ha az eljárást hívják. Ebben az esetben azonban a felhasználónak meg kell adnia a paraméterek értékeit ugyanabban a sorrendben, amelyben az eljárás létrehozásakor szerepelnek. Adja meg az alapértelmezett értéket a paraméterhez egyszerűen átadásával, ha a felsorolt \u200b\u200bfelsorolás esetén lehetetlen. Ha a paraméterek szükségesek, amelyekre az alapértelmezett érték definiálva van, elegendően explicit paraméternév jelzése a tárolt eljárás meghívásakor. Ezenkívül tetszőleges sorrendben felsorolhatja a paramétereket és értékét.

Ne feledje, hogy az eljárás felhívásakor az értékekkel rendelkező paraméterek neve, vagy csak a paraméternév nélküli értékek jelzik. Kombinációjuk nem megengedett.

Használja a megtérülést a tárolt eljárásban

Lehetővé teszi, hogy a megadott állapot bármely pontján kilépjen az eljárásból, és lehetővé teszi, hogy az eljárás eredményét az eljárás minőségének és helyességének megítélhesse. Példa a paraméterek nélküli eljárás létrehozására:

Az eljárás létrehozása COUNT_BOOKS AS SELECT COUNT (CODE_Book) a könyvekből

1. Feladat.

EXECT COUNT_BOOKS.

Nézze meg az eredményt.

Példa a bemeneti paraméterrel való eljárás létrehozására:

Az eljárás létrehozása COUNT_BOOKS_PAGES @COUT_PAGES AS INT AS SELECT COUNT (CODE_BOOK), ahol az oldalak\u003e \u003d @count_pages Go

2. feladat.. Hozzon létre ezt az eljárást a DB_Books adatok tárolt eljárásaiban az SQL Server Management Studio Utility segítségével. Futtassa a parancs segítségével

Exec count_books_pages 100.

Nézze meg az eredményt.

Példa a bemeneti paraméterekkel való eljárás létrehozására:

Az eljárás létrehozása COUNT_BOOKS_TITLE @COUNT_PAGES AS INT, @TITLE AS CHAR (10) AS SELECT COUNT (CODE_BOOK) A könyvek közül, ahol az oldalak\u003e \u003d @count_pages és cím_book, mint a @title

3. feladat. Hozzon létre ezt az eljárást a DB_Books adatok tárolt eljárásaiban az SQL Server Management Studio Utility segítségével. Futtassa a parancs segítségével

Exec count_books_title 100, "p%"

Nézze meg az eredményt.

Példa egy bemeneti paraméterekkel és kimeneti paraméterrel rendelkező eljárás létrehozására:

Az eljárás létrehozása COUNT_BOOKS_ITOGO @COUNT_PAGES INT, @TITLE CHAR (10), @ITOGO INT Kimenet, a @ITOGO \u003d COUNT (CODE_BOOK) Könyvek közül, ahol az oldalak\u003e \u003d @count_pages és cím_book, mint a @title

4. feladat. Hozzon létre ezt az eljárást a DB_Books adatok tárolt eljárásaiban az SQL Server Management Studio Utility segítségével. Futtatás parancskészlet segítségével:

SQL\u003e Declare @q AS INT EXECT_BOOKS_ITOGO 100, "P%", @Q kimenet Válassza a @Q

Nézze meg az eredményt.

Példa a bemeneti paraméterekkel és a visszatéréssel kapcsolatos eljárás létrehozására:

Az eljárás megkezdése CheckName @param int mint ha (Válassza ki a NAME_AUTHOR-t a szerzőktől, ahol a code_author \u003d @param) \u003d "Pushkin A.s." Visszatérés 1 Else Vissza 2

5. feladat. Hozzon létre ezt az eljárást a DB_Books adatok tárolt eljárásaiban az SQL Server Management Studio Utility segítségével. Futtassa a parancsokat:

Deklare @return_status int exec @return_status \u003d CheckName 1 Válassza a "Visszatérési állapot" \u003d @return_status

Példa a paraméterek nélküli eljárás létrehozására, hogy növelje a billentyűmező értékét a vásárlási táblázatban 2-szer:

A PROC UPDATE_PROC létrehozása frissítésként Vásárlások beállítása kód_purchase \u003d code_purchase * 2

6. feladat. Hozzon létre ezt az eljárást a DB_Books adatok tárolt eljárásaiban az SQL Server Management Studio Utility segítségével. Futtassa a parancs segítségével

Execure_Proc

Példa egy olyan eljárásra, amelynek bemeneti paraméterrel rendelkezik minden egyes információra vonatkozó valamennyi információhoz:

CRECH SELECH SELECT_AUTHOR @K CHAR (30) AS kiválasztása * a szerzők, ahol név_author \u003d @

7. feladat.

Exec select_author "Pushkin A.S." vagy select_author @ k \u003d "Pushkin A.s." vagy exec select_author @ k \u003d "Pushkin A.s."

Egy példa arra, hogy egy bemeneti paraméterrel és alapértelmezett értékkel rendelkező eljárást hozzon létre, hogy növelje a vásárlási táblázatban lévő kulcsmező értékét egy meghatározott számú alkalommal (alapértelmezés szerint 2-szer):

A PROCURE_PROC @EP INT \u003d 2 CREATE frissítéseként beállított kód_purchase \u003d code_purchase * @p

Az eljárás nem ad vissza az adatokat.

8. feladat. Hozzon létre ezt az eljárást a DB_Books adatok tárolt eljárásaiban az SQL Server Management Studio Utility segítségével. Futtassa a parancsokat:

EXEX UPDATE_PROC 4 VAGY EXECTIFURE_PROC @EP \u003d 4 vagy EXRUME_PROC - Az alapértelmezett értéket használják.

Példa a bemeneti és kimeneti paraméterekkel kapcsolatos eljárás létrehozására. Hozzon létre egy eljárást a megadott időszak alatt végrehajtott megrendelések számának meghatározásához:

Hozzon létre proc count_purchases @ D1 SmallDateTime, @ D2 SmallDateTime, @c int kimenetet a @ C \u003d Count (Code_purchase) kiválasztása, ahol a date_order a @ D1 és @ D2 Set @c \u003d Isnull (@C, 0) között van

9. feladat. Hozzon létre ezt az eljárást a DB_Books adatok tárolt eljárásaiban az SQL Server Management Studio Utility segítségével. Futtassa a parancsokat:

Declare @ C2 int Exec count_purchases '01 - június - 2006 ', '01 - Jul- 2006', @ C2 kimenet Válassza a @ C2

K. laboratóriumi munka №4

Tábornok. Az SQL Server Management Studio segédprogram létrehozásához Új oldal A kód ("Lekérdezés létrehozása" gomb). Programmatikusan készítsen aktív DB_Books adatbázist a használati üzemeltető segítségével. Hozzon létre tárolt eljárásokat az Eljárás-üzemeltetők használatával, és függetlenül határozza meg az eljárások nevét. Minden egyes eljárás végez egy SQL lekérdezést, amelyet a második laboratóriumi munkában végeztünk. Ezenkívül meg kell változtatni az SQL lekérdezési kódot úgy, hogy továbbíthassák azokat a mező értékekre, amelyekre a keresést végzik.

Például a kezdeti feladat és a laboratóriumi munka 2-es kérése:

/ * Válasszon a Referencia könyvszolgáltatók (Develyes Table) nevek, telefonok és fogadó (Name_Company, Telefon és Inn Fields), akinek cég neve (NAME_COMPANY mező) "OAO World".

Válassza ki a NAME_COMPANY, TELEHASZNÁLHATÓ TELEFON, INSREÁLLÍTÁSOK, ahol NAME_COMPANY \u003d "OAO WORLD"

* / - Ez a munkafolyamat létrejön:

CRECE SELECT_NAME_COMPANY @COMP CHAR (30) AS SELECT NAME_COMPANY, TELEHASZNÁLHATÓ TELEFON, TELEHASZNÁLHATÓ HOZZÁFÉRÉSEK, HOGY: WHOW_COMPANY \u003d @COMP

- az eljárás sorrendjét a parancs használja:

Exec select_name_company "ejsc világ"

Feladat lista

Az SQL Server Management Studio segédprogramban hozzon létre egy új programot. Programmatikusan készítsen aktív egyedi adatbázist az 1. számú laboratóriumi munkavégzésben, a Használatkezelő használatával. Hozzon létre tárolt eljárásokat az Eljárás-üzemeltetők használatával, és függetlenül határozza meg az eljárások nevét. Minden egyes eljárás végez egy SQL lekérdezést, amelyet külön feladatok formájában mutatunk be.

1.opció

1. A legalább egy gyermekkel rendelkező alkalmazottak listájának visszavonása.

2. A megadott időszakban ajándékokat adó gyermekek listájának visszavonása.

3. A kiskorú gyermekek listájának visszavonása.

4. Az adatokra vonatkozó információk visszavonása a megadott számnál több, mint a dátum szerint.

2. lehetőség.

1. Jelenítse meg a megadott típusú eszközök listáját.

2. Távolítsa el a javított eszközök számát és a javítások teljes költségét a megadott varázslóban.

(3) Az eszköztulajdonosok listájának és a fellebbezésük számának megteremtése a csökkenő fellebbezések számával.

4. Megjeleníti a mesterekről szóló információkat a mentesítésnél a megadott számnál, vagy a megadott időpontnál kisebb vételi dátummal.

3. lehetőség.

2. Az értékesítési kódok listájának megjelenítéséhez, amelyekre az értékesített színek több, mint a megadott szám.

3. Távolítsa el az eladást, az összeget, az eladót és a virágot a megadott értékesítési kódban.

4. Jelenítse meg a színek és a minőségű virágok listáját a megadott szám vagy virágzás magasságával.

4. lehetőség.

1. A kábítószerek listájának visszavonása a megadott jelzéssel.

2. A szállítmányok listájának megjelenítéséhez, amely több, mint a megadott számú azonos gyógyszer.

3. A szállítási dátum visszavonása, az összeg, a fej címe a beszállítótól és a gyógyszer nevét a beérkezeti kódnál, mint a megadott szám.

5. lehetőség.

2. Jelenítse meg az írt berendezések listáját a jelzett okhoz.

3. A kézhezvétel dátumának visszavonása, a berendezés neve, a megadott időszakban leírt berendezések felelősségének és leírásának időpontjának neve.

4. Jelenítse meg a megadott típusú berendezések listáját, vagy a beérkezési dátummal többet, mint egy bizonyos értéket.

6. lehetőség.

1. A megadott számnál nagyobb edények listája.

2. A termékek listájának visszavonása, amelynek címében megtalálható a szó meghatározott töredéke.

3. Távolítsa el a termék térfogatát, az edény nevét, a termék nevét a megadott kezdeti értékből egy adott végső értékkel.

4. Jelenítse meg a főzés folyamatát, és az edény neve a szénhidrátok mennyiségével nagyobb, mint egy bizonyos érték, vagy a kalóriak mennyisége nagyobb, mint a megadott érték.

7. lehetőség.

1. A munkavállalók listájának visszavonása ezzel a hozzászólással.

3. A nyilvántartásba vétel időpontjának visszavonása, a dokumentum típusa, a hivatalvezető neve és a megadott időszakban nyilvántartott dokumentumok megszervezése.

4. Megjeleníti a regisztrált dokumentumok listáját egy adott típusú dokumentummal, vagy a regisztráció dátuma nagyobb, mint a megadott érték.

8. lehetőség.

1. A munkavállalók listájának visszavonása az elbocsátás meghatározott okával.

3. visszavonja a bejegyzés időpontját, az ok az elbocsátásra, a neve a munkavállaló dokumentumok regisztrált a meghatározott időszakra.

9. lehetőség.

1. Az alkalmazottak listájának visszavonása, akik bátorítják a megadott típusú vakációt.

2. Húzza a dokumentumok listáját a regisztrációs dátumon a megadott időszakban.

3. A nyilvántartásba vétel időpontjának visszavonása, a nyaralás típusa, a megadott időszakban nyilvántartásba vett dokumentumok főisége.

4. Jelenítse meg a regisztrált dokumentumok listáját a megadott tartományban lévő dokumentumkóddal.

10. lehetőség.

1. A munkavállalók listájának visszavonása ezzel a hozzászólással.

2. A dokumentumok listájának visszavonása, amelyben a szó meghatározott fragmense megtalálható.

3. A regisztráció dátumának visszavonása, a dokumentum típusa, a feladó főisége és a megadott időszakban regisztrált dokumentumok megszervezésének neve.

4. Jelenítse meg a regisztrált dokumentumok listáját a megadott típusú dokumentummal vagy a dokumentumkóddal kevesebb, mint egy bizonyos érték.

11. opció.

1. A megadott álláspontra kijelölt alkalmazottak listájának visszavonása.

2. Húzza a dokumentumok listáját a regisztrációs dátumon a megadott időszakban.

3. A regisztrációs dátum visszavonása, pozíció, teljes név a megadott időszakban regisztrált dokumentumokhoz.

4. Jelenítse meg a regisztrált dokumentumok listáját a megadott tartományban lévő dokumentumkóddal.

12. lehetőség.

3. Visszavonni a személyek listáját, amelyek a bérletet bérelnek, és a fellebbezésük számát a csökkenő fellebbezések számával rendezik.

13. lehetőség.

1. Jelenítse meg a megadott típusú berendezések listáját. 2. Jelenítse meg az adott alkalmazottról leírt berendezések listáját.

3. Jelenítse meg a berendezés által csoportosított írott berendezések összegét.

4. A munkavállalókkal kapcsolatos információk megjelenítése a foglalkoztatás dátumával, mint egy adott időpontban.

14. lehetőség.

1. Jelölje be a virágok listáját a megadott lap típusú.

2. Huzalozzon olyan jövedelemkódok listáját, amelyekre az eladott színek több, mint egy bizonyos érték.

3. Távolítsa el a kézhezvétel dátumát, az összegét, a szállító nevét és a színeket a szállító egy adott kódján.

4. A virágok és fajták listája a virágokhoz, mint egy bizonyos szám, vagy virágzó.

15. lehetőség.

1. Az ügyfelek listájának visszavonása, akik a megadott időszak alatt a számokhoz jöttek.

2. Az egyes ügyfelek teljes összegének visszavonása.

3. Távolítsa el az érkezés dátumát, a szoba típusát, a megadott időszakban regisztrált ügyfelek nevét.

4. Húzza meg a regisztrált ügyfelek listáját egy bizonyos típusban.

16. lehetőség.

1. Jelenítse meg a megadott típusú berendezések listáját.

2. Adjon meg egy listát olyan berendezésekről, amelyek egy bizonyos ügyfelet bérelnek.

3. A személyek listájának visszavonása, amely a bérbeadáshoz szükséges eszközöket és a fellebbezések számát a csökkenő fellebbezések számával rendezik.

4. A címek által rendezett információkat.

17. opció.

1. A beszerzési értékek listájának megjelenítése több mint egy bizonyos értéknél vagy garanciális időszakban több, mint egy meghatározott szám.

2. Az anyagi értékek listájának felsorolása, amelynek címében a megadott szó megtalálható.

3. Távolítsa el az értékek értékének értékét a megadott tartományban lévő kóddal.

4. Jelenítse meg a pénzügyileg felelős személyek listáját a meghatározott tartományban lévő foglalkoztatás időpontjával.

18. opció.

1. Lista javítási munkálatokegy adott mester által végzett.

2. A munkában szereplő munkaköri szakaszok listájának visszavonása, amelynek címében a megadott szó megtalálható.

3. levezetéséhez az összeg a költségek a következő lépéseket javítási munkák előtt végzett munka a kódot a megadott tartományban.

4. Húzza meg a mesterek listáját a megadott tartományban a foglalkoztatás napjától.

19. opció.

1. A kábítószerek listájának visszavonása bizonyos jelzéssel.

2. Húzza meg az ellenőrzések ellenőrzésének listáját, amelyeknél több, mint egy bizonyos számú gyógyszert értékesített.

3. Az értékesítés dátumának visszavonása, az összeg, a teljes név és a gyógyítás a megadott számmal.

4. A kijelző a gyógyszerek listáját és mértékegységek gyógyszerek esetében a csomag csomagolás nagyobb, mint a megadott szám vagy kód a gyógyszer kevesebb, mint egy bizonyos értéket.

20. opció.

1. A munkavállalók listájának visszavonása ezzel a hozzászólással.

2. A dokumentumok listájának visszavonása, amelyben a szó meghatározott fragmense megtalálható.

3. visszavonja a bejegyzés időpontját, a dokumentum, teljes név, és az a tény, végrehajtási dokumentumok regisztrált a meghatározott időszakra.

4. Jelenítse meg a regisztrált dokumentumok listáját a megadott dokumentumtípussal vagy a dokumentumkóddal egy adott tartományban.

Tárolt eljárás - Az adatbázis objektum, amely SQL utasítások készlete, amelyet egyszer és a kiszolgálón tárolnak. A tárolt eljárások nagyon hasonló a hagyományos eljárások magas szintű nyelvi eljárások, lehet, hogy a bemeneti és kimeneti paramétereket és lokális változók, hogy ezek a készítmények a numerikus számítások és a műveletek szimbolikus adatokat, amelyek eredményeit is jelöli változók és paraméterek. A tárolt eljárások elvégezhető szabvány műveletek adatbázisokkal (mind DDL, mind DML). Ezenkívül a ciklusok és az ágak a tárolt eljárásokban lehetségesek, azaz a végrehajtási folyamatvezérlő utasításai használhatók.

A tárolt eljárások hasonlóak a felhasználó által meghatározott funkciókhoz (UDF). A fő különbség az, hogy a felhasználói funkciók bármely más kifejezést használhatók SQL kérésA tárolt eljárásoknak a hívás funkció használatával kell hívni:

Hívás eljárás (...)

Végrehajtási eljárás (...)

A tárolt eljárások több eredményt adhatnak vissza, azaz a kiválasztási lekérdezési eredmények. Az ilyen többszörös eredmények feldolgozhatók a kurzorok, egyéb tárolt eljárások alkalmazásával, a kapott készlet referenciakészletének visszaküldése, vagy alkalmazások. A tárolt eljárások is tartalmazhatnak bejelentett adatfeldolgozás változók és kurzorok, amely lehetővé teszi, hogy szervezzen egy hurok több sort a táblázatba. Az SQL szabvány egyfajta, hurok, ismétlés, eset-kifejezés és sok más munkáját biztosítja. A tárolt eljárások változhatnak, visszatérhetnek az eredményeket, vagy megváltoztathatják a változókat, és visszaküldhetik őket attól függően, hogy hol vannak a változó.

A tárolt eljárások végrehajtása az egyik DBMS-ről a másikra változik. A legtöbb nagy adatbázis-szolgáltató egy formában vagy más formában támogatja őket. A DBMS-től függően a tárolt eljárások különböző programozási nyelveken, például SQL, Java, C vagy C ++ alkalmazásban valósíthatók meg. Az SQL-hez nem írt tárolt eljárások önállóan végrehajthatják az SQL lekérdezéseket, és előfordulhat, hogy nem végezhető el.

Per

    A logika szétválasztása más alkalmazásokkal. A tárolt eljárások a funkcionalitást kapják; Ez biztosítja az adatok összekapcsolását és a különböző alkalmazások közötti kezelést.

    Felhasználói elkülönítés az adatbázis táblákból. Ez lehetővé teszi a tárolt eljárások elérését, de nem az adatokhoz.

    Biztonsági mechanizmust biztosít. Az előző bekezdéssel összhangban, ha csak tárolt eljárásokon keresztül érheti el az adatokat, senki más nem tudja törölni az adatokat az SQL DELETE parancs segítségével.

    A végrehajtás javítása a hálózati forgalom csökkentése miatt. A tárolt eljárásokkal számos kérés kombinálható.

Vs

    Megnövelt terhelés az adatbázis-kiszolgálón, mivel a legtöbb munka a szerver részén, és kisebb az ügyfél.

    Sok dolgot kell gondolkodni. Meg kell tanulnod a MySQL kifejezések szintaxisát a tárolt eljárások megírásához.

    A kérelem logikáját két helyen duplikálja: a szerverkód és a tárolt eljárások kódja, ezáltal bonyolítja az adatkezelési folyamatot.

    A migráció egy DBMS-vel a másikra (DB2, SQL Server stb.) Problémákhoz vezethet.

A tárolt eljárások kinevezése és előnyei

A tárolt eljárások lehetővé teszik a termelékenység növelését, a programozási képességek bővítését és az adatbiztonsági funkciók támogatását.

A gyakran használt lekérdezés tárolása helyett az ügyfelek a megfelelő tárolt eljárásra utalhatnak. A tárolt eljárás hívásakor a tartalmát azonnal feldolgozza a szerver.

A tényleges lekérdezés mellett a tárolt eljárások számításokat és adatkezelést is tehetnek - változtatni, törölni, végrehajtani a DDL operátorokat (nem minden DBMS! Egyetlen üzemeltető lehetővé teszi, hogy egy komplex forgatókönyvet hívjon, amely a tárolt eljárásban található, amely elkerüli a több száz parancs hálózaton keresztül történő elküldését, és különösen annak szükségességét, hogy nagy adatmennyiségeket továbbítsák az ügyféltől a kiszolgálóig.

A legtöbb DBMS-ben, amikor először elindítja a tárolt eljárást, összeállítja (szintaxiselemzés végezhető el, és egy adat-hozzáférési terv keletkezik). A jövőben a feldolgozás gyorsabban történik. Az Oracle DBMS-ben az adatszótárban tárolt tárolt eljárási kód értelmezése történik. Az Oracle 10g verziójától kezdve az SI tárolt eljárási kódjának úgynevezett természetes összeállítását (natív összeállítását), majd a célgép gépkódjába, majd a tárolt eljárást közvetlenül az összeállítási objektumkódjának nevezik.

Programozási funkciók

A létrehozott tárolt eljárás bármikor okozott, amely modularitást biztosít és serkenti a kód újrafelhasználását. Az utóbbi megkönnyíti az adatbázis támogatását, mivel az üzleti szabályok megváltoztatásával izolálódik. A tárolt eljárás módosítása az új szabályok szerint bármikor lehet. Ezt követően minden olyan alkalmazás, amely használja automatikusan összhangban az új üzleti szabályokkal, közvetlen módosítás nélkül.

Biztonság

A tárolt eljárások segítségével korlátozza vagy kizárja a közvetlen felhasználói hozzáférést az adatbázis táblákat, így a felhasználók csak engedéllyel elvégzésére tárolt eljárások, amelyek közvetett és szigorúan szabályozott adatokhoz való hozzáférést. Ezenkívül egyes DBMS támogatja a szöveges titkosítás (csomagolás) tárolt eljárás.

Ezek a biztonsági funkciók lehetővé teszik, hogy elkülönítse az adatbázis-struktúrát a felhasználóból, amely biztosítja a bázis integritását és megbízhatóságát.

Az ilyen intézkedések valószínűsége csökken, mint az "SQL-kód végrehajtása", mivel a DBMS kérés elküldése előtt jól meg kell írni a bemeneti paramétereket.

A tárolt eljárások végrehajtása

A tárolt eljárásokat általában SQL nyelven vagy annak konkrét megvalósításával hozták létre a kiválasztott DBMS-ben. Például a DBMS e céljaira Microsoft SQL. Szerver Van egy Transact-SQL nyelv, az Oracle - PL / SQL, az Interbase és Firebird - PSQL, PostgreSQL - PL / PGSQL, PL / TCI, PL / PYTHON, IBM DB2 - SQL / PL ( Eng.), Informix - SPL. A MySQL-nek szorosan követnie kell az SQL-t: 2003-at, a nyelv hasonló az SQL / PL-hez.

Néhány DBMS-ben lehetséges olyan tárolt eljárásokat használni, amelyek bármely olyan programozási nyelven íródott, amely képes önálló végrehajtható fájlok létrehozására, például a C ++ vagy a Delphi-on. A Microsoft SQL Server terminológiában az ilyen eljárásokat fejlett tárolt eljárásoknak nevezik, és egyszerűen a Win32-DLL-ben található funkciók. És például az Interbase és a Firebird esetében a DLL / tehát okozott funkciók esetében egy másik név definiált - UDF (Felhasználó által definiált funkció). Az SQL 2005-ös MS 2005-ben lehetőség van a tárolt eljárások megírására bármely language.net-ben, és a kiterjesztett tárolt eljárásokból a jövőben megtagadják. A DBMS Oracle viszont lehetővé teszi a tárolt eljárások megírását java nyelv. Az IBM DB2-ben a tárolt eljárások és funkciók írása a hagyományos programozási nyelvekben a kezdetektől fogva hagyományos módja, és az SQL eljárási kiterjesztést csak kellően késői verziókban adták hozzá, az ANSI szabványba való felvétele után . Emellett a Java és a Támogatások tájékoztatása.

Az Oracle DBMS-ben a tárolt eljárások kombinálhatók az úgynevezett csomagokba (angol. Csomagok). A csomag két részből áll - specifikációból (angol. Csomag specifikáció), amely jelzi a tárolt eljárás definícióját és a testületet (angol csomag testület), ahol annak megvalósítása. Így az Oracle lehetővé teszi a programkód interfészének elválasztását a megvalósításából.

Az IBM DB2 DBMS-ben a tárolt eljárások modulokká válhatók.

Szintaxis

Eljárás létrehozása `p2` ()

SQL Security Definer.

Megjegyzés "Eljárás"

Válassza a "Hello World!";

A kód első része tárolt eljárást hoz létre. Ezután - opcionális paramétereket tartalmaz. Aztán van egy név, és végül az eljárás teste.

4 A tárolt eljárás jellemzői:

Nyelv: A hordozhatóság elvégzéséhez az alapértelmezett SQL meg van adva.

Determinisztikus: Ha az eljárás mindig ugyanazt az eredményt adja vissza, és ugyanazokat a bejövő paramétereket veszi át. Ez a replikáció és a regisztrációs folyamat. Az alapértelmezett érték nem determinisztikus.

SQL Security: A hívás során a felhasználó jogait ellenőrzik. Az invoker olyan felhasználó, amely tárolt eljárást eredményez. A definer a "Teremtő" eljárás. Alapértelmezett érték - definer.

Megjegyzés: Documencing esetén az alapértelmezett érték ""

Hívás tárolt eljárás

Hívja a Stored_Procedure_Name-t (Param1, Param2, ....)

Hívja az eljárást1 (10, "string paraméter", @parameter_var);

A tárolt eljárás módosítása

A MySQL megváltoztatja az eljárási kifejezést az eljárások megváltoztatásához, de alkalmas csak néhány jellemző megváltoztatására. Ha meg kell változtatnia az eljárás paramétereit vagy testét, akkor távolítsa el és hozzon létre újra.

Eltávolítástárolteljárások

Drop eljárás, ha létezik P2;

Ez egy egyszerű csapat. A HA létező kifejezés hibaüzenetet tesz, ha egy ilyen eljárás nem létezik.

Paraméterek

Eljárás létrehozása PROC1 (): A paraméterek üres listája

Az eljárás létrehozása PROC1 (Varname Adat típusban): egy bejövő paraméter. Az Incled szó opcionális, mert az alapértelmezett paraméterek vannak (bejövő).

Az eljárás létrehozása PROC1 (VARNAME DATA-TÍPUS): Egy visszaadott paraméter.

Az eljárás létrehozása PROC1 (INOUT VARNAME DATA-TÍPUS): Egy paraméter egyidejűleg bejövő és visszatért.

A változó nyilatkozatának szintaxisa így néz ki:

A VARNAME DATA-TÍPURE ALKALMAZÁSI ALAPÍTVÁNYTARTÁSA;

Az eljárás bejelentése

Hozzon létre eljárást. [({In | Out | Inout} [,…])]
[Dinamikus eredménykészlet. ]
Kezdődik. [Atom]

Vége.

Kulcsszavak
. IN (INPUT) - bemeneti paraméter
. Ki (kimenet) - kimeneti paraméter
. Inout - bemeneti és kimenet, valamint mező (paraméterek nélkül)
. A dinamikus eredménykészlet azt mutatja, hogy az eljárás megnyithatja a megadott számú kurzort, amely az eljárásból származó visszatérés után nyitva marad.

Jegyzetek
Nem ajánlott számos paramétert használni a tárolt eljárásokban (elsősorban nagy számok és szimbolikus húrok) a hálózat és a verem túlterhelés miatt. A gyakorlatban a meglévő tranzakciós-SQL, PL / SQL és INFORMIX dialektusokban jelentős különbség van a szabványtól, mind a paraméterek, mind a változók nyilatkozatában és a szubrutin hívásban. A Microsoft javasolja a következő közelítés alkalmazását a tárolt eljárás gyorsítótárának méretének becsléséhez:
\u003d (a maximális munkavállalók maximális száma) * (Méret maga nagy terv Teljesítmény) * 1.25. A végrehajtási terv méretének meghatározása az oldalakon a parancs használatával történhet: DBCC Memusage.

Hívási eljárás

Számos meglévő DBMS-ben a tárolt eljárások hívását az üzemeltető segítségével végzik:

Végrehajtási eljárás. [(][)]

jegyzet: A tárolt eljárások hívása az alkalmazásból, egy másik tárolt eljárásból vagy interaktív módból készülhet.

Példa az eljárás bejelentésére

Az eljárás létrehozása PROC1 AS // Az eljárás kijelentése
A Cur1 kurzor kijelölése a Select Sname-hez, a város értékesítéséből, ahol a minősítés\u003e 200/9 kijelent
Nyissa meg a Cur1 // Nyissa ki a kurzort
A CUR1 // a kurzorból származó adatok olvasása
Míg @@ Fetch_Status \u003d 0
Kezdődik.
A Cur1-től
Vége.
Bezárás Cur1 // Close Cursor
Cur1 elosztása
Végezze el a PROC1 // futtatása az eljárást

Polimorfizmus
Az azonos névvel rendelkező két szubrutin ugyanabban a diagramban hozható létre, ha a két szubrutin paraméterei átlagosan egymástól szolgálnak, így megkülönböztethetők. Annak érdekében, hogy megkülönböztessük a két alprogramot ugyanolyan névvel azonos diagramban, mindegyik alternatív és egyedi nevet (specifikus név) kap. Az ilyen nevet kifejezetten jelezheti, ha a szubrutin meghatározása megtörtént. A szubrutinok hívásakor, ha több azonos név van, a kívánt szubrutin meghatározása több lépésben történik:
. Kezdetben határozza meg az összes eljárást meghatározott névÉs ha nincs ilyen, akkor minden funkció a megadott névvel.
. További elemzések esetén csak azok a szubrutinok maradnak, amelyekhez tartoznak ez a felhasználó Van egy kiváltsága a kivitelezéshez (végrehajtás).
. Számukra azok, akiknek a paraméterek száma megfelel a hívás argumentumának számának. A megadott adattípusokat paraméterekben és pozíciójukban ellenőrizzük.
. Ha több szubrutin marad, akkor a minősítési nevet választja.
A gyakorlatban az Oracle polimorfizmust csak a csomagban bejelentett funkciók támogatják, [E-mail védett] - Különböző rendszerben, valamint Sybase és MS SQL szerver, túlterhelés tilos.

Az eljárások eltávolítása és módosítása
Az eljárás törléséhez az üzemeltetőt használják:

Az eljárás megváltoztatásához az üzemeltetőt használják:

Módosítási eljárás. [([{In | Out | Inout}])]
Kezdődik. [Atom]

Vége.

Az eljárások végrehajtásának kiváltságai

Engedélyezés végrehajtása. Nak nek. |Nyilvános [Támogatási lehetőséggel]

Rendszer-eljárások
Számos DBMS (beleértve az SQL-kiszolgálót is) van egy bizonyos beépített rendszer tárolt eljárása, amely saját célokra használható.

Az előző cikkben e ciklusból Megnéztük, hogy az adatok hogyan lehet letölteni a táblázatokból, módosíthatják szerkezetüket, létrehozhatják, módosítsák és törölhetik az adatbázisokat és objektumokat, amelyekben szerepelnek. Ebben a cikkben részletesebben beszélünk a szerver DBMS: ötletek, kiváltók és tárolt eljárások jellemzői.

Az első cikk, ebben a ciklusban, megjelent sz 3'2000 Magazinunk, láttuk, hogy a legtöbb modern szerver DBMS alátámasztani, triggerek és tárolt eljárások. A képviseleteket számos asztali DBMS is támogatja, például a hozzáférés, a DBase, Clipper.

Meg kell jegyezni, hogy a triggereket és a tárolt eljárásokat általában programozási nyelvek írják le, amelyek az SQL nyelv eljárási kiterjesztései. Ezek a kiterjesztések olyan operátorokat tartalmaznak, amelyek leírják az algoritmusokat, például ... míg, ha ... Ha ... más, akkor hiányzik az SQL nyelven (ha emlékszel, az SQL egy nemkívánatos nyelv, és megfogalmazhatja a feladatot , de lehetetlen leírni a végrehajtási algoritmusait). Ellentétben az SQL nyelv alárendelt szerepet játszik a normál, az eljárási kiterjesztések nem egységesek, és a különböző DBMS különböző szintaktikai szerkezetek arra, hogy ugyanazokat algoritmikus tervez, de a vita a különbségek SQL kiterjesztése szintaxis különböző DBMS-túlmutat a jelen cikk .

Annak illusztrálására, hogyan használhatja nézetek, triggerek és tárolt eljárások, úgy döntöttünk, a Microsoft SQL Server 7.0 és a Northwind adatbázist, amely tartalmazza a szállítási ezt a DBMS.

Elvégzése előtt példák, figyeljen arra, hogy a végrehajtás és alkalmazás tárolására kiváltó okok és a tárolt eljárásokat az adatbázis-kezelő rendszert használ eltérhetnek ebben a cikkben bemutatott. Ezenkívül a kiszolgálói objektumok létrehozása megfelelő jogosultságokkal kell rendelkeznie az adatbázis-adminisztrátor által biztosított jogosultságokkal.

Megjegyezzük továbbá, hogy néhány ODBC illesztőprogramok nem támogatják a hívást, a tárolt eljárásokat kliens alkalmazások, akkor is, ha azok támogatják a DBMS is. Ebben az esetben azonban a tárolt eljárások továbbra is okozhatnak triggerekből.

Kezdjük az ötletekkel, majd beszéljünk a tárolt eljárásokkal, és fejezze be a trigger áttekintés fejezetét.

Reprezentáció

A prezentáció virtuális tábla, amely általában egy vagy több asztal oszlopot tartalmaz. Valójában a nézet nem tartalmaz adatokat, de csak egy SQL lekérdezési típust jelzi, hogy melyik adat, és amelyből táblázatokat kell tenni a jelenlét elérésekor. Ebből a szempontból a bemutató tárolási kérelem.

A legtöbb esetben a benyújtás az adatbiztonság biztosítására szolgál. Például egyes felhasználók kategóriái hozzáférhetnek a prezentációhoz, de nem azokat az asztalokat, amelyek adata képződik; Ezen túlmenően, az SQL lekérdezés tartalmazhatja a felhasználói paramétert (a nevet, amely alatt a felhasználó regisztrált), és ebben az esetben a rendelkezésre álló adatok, amikor hivatkozva a nézet függ a felhasználónév.

Az alábbiakban a reprezentációk fő jellemzői:

  • a bemutatók úgy viselkednek, mint a táblák;
  • a nézetek nem tartalmaznak adatokat;
  • a bemutatók több mint egy táblázatból származhatnak.

A nézet létrehozásához használhatjuk a létrehozása SQL Javaslat módosítását - az ALTER Nézet javaslatát, és távolítsa el - a Drop nézet ajánlatot.

Elkezdjük a Létrehozó kezelőjét az aktuális adatbázis megtekintéséhez.

Hozzon létre nézet ajánlatot

Szintaxis javaslat A nézet létrehozásához hasonlít az SQL SELECT JAVASLAT több további kulcsszóval. Az alábbiakban az egyszerűsített szintaxis:

View View_Name létrehozása Select_Statement

A View_Name argumentum jelzi a bemutató nevét. A Microsoft SQL Server programban használt kulcsszó lehetővé teszi, hogy elrejtse a Létrehozás Forrás szövegét a Syscommentes táblázatban.

A kulcsszó azt jelzi, hogy melyik kiválasztási lekérdezés történik, ha kapcsolatba lép a nézethez. Kérjük, vegye figyelembe, hogy ez a lekérdezés nem tartalmazhat sorrendet a kulcsszavak, kiszámíthatja vagy számítja ki, és nem utalhat az ideiglenes táblára.

A korábban létrehozott nézet módosításához használhatja a következő részben röviden leírt módosítási javaslatot.

Ajánlat csepp nézet.

Ez az ajánlat az adatbázisból származó nézetek törlésére szolgál. Ne feledje, hogy ha egy táblázatot töröl az adatbázisból, az eltávolításhoz kapcsolódó összes nézetet eltávolítják. Az ajánlat használatával meg kell adnunk a távoli nézet nevét. A nézet törlése után minden információt eltávolítanak a rendszertáblákról.

Egy másik eset, amikor a nézetet el kell távolítani, felmerülhet, feltéve, hogy a táblázatok szerkezete, amelyen alapul, megváltoztatta a nézetet. Ebben az esetben törölheti a nézetet, majd újra létrehozhatja a Készítsen nézet ajánlatot.

Ötletek létrehozása és használata

A megtekintési ajánlat létrehozása olyan reprezentációk létrehozására szolgál, amelyek lehetővé teszik az egyes követelményeknek megfelelő adatokat. A prezentáció az aktuális adatbázisban található, és külön tárgyként tárolódik.

A nézet létrehozásának legjobb módja egy kiválasztási lekérdezés létrehozása, és ellenőrizze, adja hozzá a létrehozott nézet javaslat hiányzó részét. Nézzük meg a forráskódot a termékek kategóriájának bemutatására a Northwind adatbázisban (1. lista).

Az első sor félkövér van valami, hogy az SQL javaslat eltér létrehozása céljából a szokásos SELECT kérés, amely végrehajtja az adatokat adja meg az adatokat. A SELECT foglalt javaslatot ebben a nézetben kiválaszt területén két tábla - a categoryname mezőt a kategóriák asztal és a TermékNév területen, QuantityperUnit, Unitsinstock, Megszűnt a termékek asztalra. Ezt követően a két táblázat adatai a kategóriákon keresztül kapcsolódnak, és csak azok a termékek, amelyek még mindig léteznek a raktárban (lásd a kulcsszó utáni kulcsszó utáni kritériumot, a kapott adatkészletben szerepel. A jelen ábrázoláshoz való fellebbezés eredményét az 1. ábrán mutatjuk be. Egy.

Most hozzunk létre egy kilátást, amely bemutatja a keleti régió összes területét. Ez a nézet a következő lekérdezésen alapul (2. lista).

Győződjön meg róla, hogy a válasszási javaslat visszaadja azokat az eredményeket, amelyekre szükségünk van, hozzáadunk a létrehozott nézet-nyilatkozatot, és hozzárendeljük a bemutató által létrehozott Eastterr nevet.

A kézi bemutató szöveg létrehozása helyett vizuális eszközöket használhat, amelyeket általában a DBMS tartalmaz. Ábrán. A 2. ábrán látható, hogyan ugyanazt a nézetet segítségével lehet létrehozni a NÉZET tervező eszköz, amely szerves része a Enterprise Manager szerepel a Microsoft SQL Server.

A nézettervező felső része lehetővé teszi, hogy megadja, hogy a táblák társuljanak, és milyen mezők jelennek meg a nézetben. Az alábbiakban megadhatja az asztalok és mezők aliasit, az értékükre vonatkozó korlátozásokat, a megjelenítési módot. A következők a bemutatás forrása és végrehajtása eredménye.

Mielőtt befejeztük rövid áttekintés ábrázoljuk, beszéljünk egy kicsit arról, hogyan kell kapni további információ róluk. A Microsoft SQL Server 7.0-ban a következő rendszer tárolt eljárásait használhatja:

  • a nézetről szóló információk beszerzése érdekében használhatja az SP_HELP rendszer tárolt eljárását. Például a SP_HELP Easterr az újonnan létrehozott beadványról szóló információkat ad vissza;
  • a nézet forrásszövegének megszerzéséhez használhatja a SP_HELPTEXT tárolt eljárást;
  • annak érdekében, hogy megtalálja az olyan táblák listáját, amelyekből a nézet függ, használhatja a SP_DEPEND SYSTEM tárolt eljárást;
  • használhatja a SP_RENAME rendszer tárolt eljárását a nézet átnevezéséhez.

Ebben a részben áttekintettük, hogyan kell felhasználni a beadványokat, hogy olyan adatokat szerezzen be, amelyek megfelelnek egy vagy egy másik kritériumnak. Az utolsó példához azonban vissza. A Northwind adatbázisban négy régió van, és az összes régió területei listájára négy különböző nézetre van szükségünk. Ez a feladat egyszerűsíthető, ha a régió értékét paraméterként átadhatjuk. Ez a tárolt eljárás segítségével történhet, amelyet a következő szakaszban fogunk beszélni.

Tárolt eljárások

A tárolt eljárás egy összeállítású SQL-javaslat, amelyet az adatbázisban nevezett objektumként mentettek, és egyetlen kódfragmensként hajtják végre. A tárolt eljárások fogadhatnak és visszaadhatják a paramétereket. Amikor a felhasználó létrehoz egy tárolt eljárást, a kiszolgáló összeállítja, és a megosztott gyorsítótárba helyezi, majd a fordított kódot több felhasználó alkalmazhatja. Ha az alkalmazás a tárolt eljárást használja, akkor továbbítja a paramétereket, ha szükséges, és a kiszolgáló végrehajtja az eljárást újrafordítás nélkül.

A tárolt eljárások lehetővé teszik az alkalmazás teljesítményének javítását. Először is, az ügyfélalkalmazásból küldött hagyományos SQL-kérelmekhez képest kevesebb időt igényelnek a végrehajtáshoz való felkészüléshez, mivel már összeállították és megmentették őket. Másodszor, a hálózati forgalom ebben az esetben is kevesebb, mint ha az SQL lekérdezést továbbítják, mivel kevesebb adatot továbbítanak a hálózaton keresztül. Ábra. A 3. ábra az ügyfélalkalmazás által a tárolt eljárás hívását szemlélteti.

A tárolt eljárások automatikusan újrafordulnak, ha olyan objektumokkal, amelyekre hatással vannak, bármilyen változtatás történt; Más szóval, ezek mindig relevánsak. Mint már említettük, a tárolt eljárások paramétereket készíthetnek, ami lehetővé teszi több alkalmazás Használja ugyanazt az eljárást különböző bemeneti készletekkel.

A tárolt eljárásokat általában az adatok referencia-integritásának és az üzleti szabályok végrehajtásának támogatására használják. Az utóbbi esetben további rugalmasság érhető el, mivel ha az üzleti szabályok megváltoznak, megváltoztathatja az eljárás szövegét, anélkül, hogy megváltoztatná az ügyfélalkalmazások módosítása nélkül.

Az eljárások létrehozásához, módosításához és eltávolításához speciális SQL-ajánlatok - létrehozása, módosítási eljárás és cseppelési eljárás. Megnézzük őket a következő szakaszban.

Hozzon létre eljárás ajánlatot

Az eljárás létrehozása A tárolt eljárás létrehozására szolgál. A következő egyszerűsített szintaxis:

CRECH PROC_NAME [(@PARAMETER DATA_TYPE) [\u003d alapértelmezett]] [...] SQL_STATIONSS

A PROC_NAME argumentum meghatározza a tárolt eljárás nevét, amely egyedinek kell lennie az aktuális adatbázisban. A @parameter argumentum meghatározza az eljárás paraméterét. Az eljárás létrehozása záradékban meghatározhat egy vagy több paramétert. Ha a paraméter alapértelmezett értéke nincs, akkor az eljárás meghívásakor át kell adnia a felhasználó (vagy ügyfélalkalmazás). A Microsoft SQL Server 7.0-ban a tárolt eljárás paramétereinek száma nem haladhatja meg a 1024-et; Alapértelmezés szerint null értékek lehetnek.

Ne feledje azonban, hogy egyes univerzális adat-hozzáférési mechanizmus további korlátozást szabhat ki a tárolt eljárások paramétereinek számára. Például az Oracle 8 BDE-vezető képes csak eljárásokkal működni, amelynek paramétereinek száma nem haladja meg a 10-et.

A DATA_TYPE argumentum jelzi a paraméter adattípust. Az alapértelmezett kulcsszó az alapértelmezett értékek beállításához használható - állandó vagy nulla lehet. Ha az alapértelmezett érték meg van adva, az eljárás leírható a paraméterérték megadása nélkül. Ha az eljárás egy hasonló kulcsszóval rendelkező paramétert használ, alapértelmezett értéke tartalmazhat csoportos karaktereket (%, _ és [^]).

A kimeneti kulcsszó azt mutatja, hogy ez a visszaadott paraméter.

A mint kulcsszó azt jelzi, hogy az eljárásnak bármely számú SQL-javaslat és javaslat formájában kell eljárnia a kiszolgáló eljárási SQL kiterjesztésére vonatkozóan.

A létrehozott eljárási ajánlat által létrehozott eljárás a jelenlegi adatbázisban kerül mentésre. A Microsoft SQL Serverben az eljárásnevek a Sysobjects System táblázatban vannak, és a forrásszöveg a SysComments táblában van.

A korábban létrehozott tárolt eljárás megváltoztatásához használhatja a következő szakaszban röviden leírt módosítási javaslatot.

Ajánlat cseppelési eljárás

Ez az ajánlat az adatbázisból származó tárolt eljárások eltávolítására szolgál. A cseppelési eljárás egy argumentumot kap - a távoli eljárás neve.

A tárolt eljárás törlésekor törlődik a sysobjects és a syscomments rendszertáblákból.

A tárolt eljárások létrehozása és használata

A részben a gondolatok figyelmet fordítottunk arra, amit lenne, ha tudnánk adni a paraméter pedig a paraméter, amely az érték a regionId, hogy válasszon egyet a négy régió a Northwind adatbázisban. Tekintsük meg a régió területeinek listáját, amely visszaadja:

Válasszon területies.terremilDescription, Region.RegionDescription a területek belsõ csatlakozás régió területeken.Regionid \u003d régió.Regionid, ahol a területek.Regionid \u003d 1

Egy másik régió kiválasztásához meg kell változtatnunk az adott esetben a kérelem utolsó sorában lévő kikötést. Ezért, ha változót használunk (hívás Regid), akkor választhatunk a négy régió egyikét anélkül, hogy megváltoztatnánk a lekérdezés más részeit.

A Northwind adatbázist, négy régió számok 1-től 4. Ez azt jelenti, hogy a REGID változó egész számnak kell lennie típusú. A tárolt eljárás kódja az alábbiak:

Létrehozatal az eljárás Showregion @regid int kiválasztása.TerrezerDescription, régió.Regiondesriftion a területek belsõ csatlakozás régió területeken.regionid \u003d régió.Regionid, ahol a területek.regionid \u003d @Regid

Ne feledje, hogy szinte minden kiválasztott lekérdezési szöveget hagytunk (ez dőlt betűvel), és csak az újonnan létrehozott tárolt eljárás (az első sorban), a paraméternyilatkozat (a második sorban) és kulcsszó Mint, jelezve azokat a javaslatok kezdetét, amelyek ténylegesen végrehajtottak.

A létrehozott eljárás végrehajtásának eredménye az SQL Server Query Analyzer-ben a Regid \u003d 2 esetében az 1. ábrán látható. 3.

Nyilvánvaló, hogy tudjuk alkalmazni a tárolt eljárások nem csak hogy végre fejlett változatai beadványok vagy „intelligens” SELECT kéréseket. A tárolt eljárások mechanizmusokat biztosítanak számos rutin feladat automatizálására.

A Microsoft SQL Server 7.0 rendszerben szisztémás tárolt eljárásokat is használhatunk a hagyományos tárolt eljárásokkal való munkavégzéshez:

  • sP_STORE_PROCEDURES - A tárolt eljárások listáját mutatja;
  • sP_HELPTEXT - Megmutatja a tárolt eljárás forrásszövegét;
  • sP_DEPEND - információkat mutat a tárolt eljárások függőségéről;
  • sP_PROCOPTION - Beállítja a tárolt eljárások lehetőségeit, vagy beállítja őket;
  • sP_RECOMPILE - A következő hívás időpontjában újrafordíthatja az eljárást;
  • sP_RENAME - megváltoztatja az eljárás nevét.

Rendszer tárolt eljárások

Mivel a Microsoft SQL Serverről beszélünk, meg kell jegyezni, hogy hatalmas számú szisztémás tárolt eljárás van végrehajtva. A rendszer tárolt eljárások neve SP_ vagy XP_-vel kezdődik, és a mester adatbázisban tárolódik. A fentiekben már leírtuk a gyakran használt rendszer tárolt eljárásait.

Kérjük, vegye figyelembe, hogy a kiváltók nem térhetnek vissza a felhasználói adatokhoz.

A Hozzon létre trigger záradékban két speciális táblázatot használhat. Például a törölt és a befecskendezett táblák ugyanolyan szerkezetűek, mint a táblázat, amelyre a trigger definiálódik, és tartalmazza a felhasználó által módosított rekordok régi és új értékeit. Például a következő SQL javaslatot használhatjuk a távoli rekordok keresésére:

Válassza a * -ot a törlésből

A lapon. A 3. ábra a törölt és feletkezett táblák tartalmát mutatja az összes lehetséges adatváltozáshoz.

A meglévő trigger megváltoztatásához használja az Alter trigger javaslatot. A következő részben beszélünk róla.

Először két új mezőt kell hozzáadnunk az asztalhoz, amelyben ezeket az információkat tartalmazza. Hívjuk őket frissítve (a menedzser nevét, amely utoljára frissítette a rekordot) és frissül (a felvétel megváltozott idő). Ezután hozzon létre egy kiindulási tartályt. Itt van a kódja:

Hozzon létre trigger tartályt az ügyfelek számára a beillesztéshez, frissítésként az ügyfelek frissítése az ügyfelek beállításakor.Updatedby \u003d user_name (), ügyfelek.

Amint a trigger forrásszövegéből látható, az egyes betétek és frissítési műveletek után történik az ügyfelek táblázatában. Ez a trigger megmenti a menedzser nevét (adatbázis-felhasználó) az ügyfelek.Updatedby mező és a változások dátuma és időpontja - az ügyfelek.UpdatedMy mezőben. Ezeket az adatokat az idő táblázatból kivonták.

Amint látja, ez a trigger lehetővé teszi a változások ellenőrzését és új bejegyzések beillesztését az asztalra.

Mielőtt befejeznénk a triggerek rövid áttekintését, jelentkeznünk kell arról, hogy hol találhat információkat a rendelkezésre álló triggerekről. A Sysobjects asztal tárolja a triggerekről és típusukról szóló információkat, és a SysComments tábla tartalmazza a forrásszöveget.

Következtetés

Ebben a részben többféle adatbázis-objektumot nézett ki - tárolt eljárások, nézetek és triggerek. A következőket tanítottuk:

  • A reprezentáció virtuális asztal, amelyet általában egy vagy több táblázat oszlopainak részhalmazaként hoznak létre. Ahhoz, hogy hozzon létre egy nézetet, a CREATE VIEW javaslat alkalmazzák, a módosítás - az ALTER VIEW javaslatot, és törölje a csepp Ajánlat megtekintése.
  • A tárolt eljárás egy összeállítású SQL-javaslat, amelyet az adatbázisban nevezett objektumként mentettek, és egyetlen kódfragmensként hajtják végre. A tárolt eljárás létrehozásához a CREESS eljárási ajánlatot a változás módosítására és a törléscsökkenési eljárásra alkalmazzák.
  • A trigger egy speciális típusát tárolt eljárás, ami automatikusan meghívódik, amikor az adatokat egy adott tábla hozzáadott, törölt vagy megváltoztatása után Insert, Delete vagy Frissítés SQL ajánlatokat. A triggerek létrehozhatók a létrehozási trigger ajánlat segítségével. A trigger megváltoztatásához az Alter Trigger javaslatot használják, és a Drop Trigger javaslatot használják.

Computerpress 12 "2000

1. Kapcsolja be a vonalat az eljárásokban - Állítsa be a nocount-t: Minden DML-expresszióval az SQL Server óvatosan visszaadja a feldolgozott rekordok számát tartalmazó üzenetet. Ez az információ Hasznos lehet számunkra a kód hibakeresése során, de miután teljesen haszontalan lesz. A NOCOUNT beállítása, kikapcsoljuk ezt a funkciót. A több kifejezést tartalmazó vagy \\ és ciklusokat tartalmazó tárolt eljárások esetében ez a művelet jelentősen növelheti a teljesítményt, mivel a forgalom száma jelentősen csökken.

Proc dbo.procname létrehozása
Mint
Állítsa be a nocount-ot;
- Van egy eljárási kód
Válassza az 1. oszlopot a dbo.tbltable1-től
- Transclude Set Nocount a forrásban
Állítsa be a nocountot;
Megy.

2. Használja a séma nevét az objektumnévvel: Nos, azt hiszem, világos. Ez a művelet azt mondja a szerveren, ahol tárgyakat keres, és ahelyett, hogy véletlenszerűen megrázza a tartályokat, azonnal meg kell tudnia, hogy hol kell mennie, és mit kell tennie. Számos adatbázis, asztal és tárolt eljárás esetén jelentősen megmentheti idejünket és idegeket.

Válasszon * a dbo.mytable-tól - így jól működik
- ehelyett
Válassza a * -ot a MyTable-től - úgyhogy rosszul
- közös eljárás
EXEC DBO.MYPROC TO-UP
--Helyette
EXEX MYPROC - Bezárás!

3. Ne használja az "SP_" előtagot a tárolt eljárások nevében: Ha az eljárásunk neve SP_-vel kezdődik, az SQL Server először keresi a fő adatbázisát. Az a tény, hogy ezt az előtagot a személyes belső szerverek tárolt eljárásokhoz használják. Ezért a felhasználása többletköltséghez vezethet, és akár helytelen eredményt is eredményezhet, ha az eljárás ugyanolyan névvel rendelkezik, mint a bázisában.

4. Használja, ha létezik (válassza az 1) helyett, ha létezik (válassza a *): A bejegyzés elérhetőségének egy másik táblázatban történő elérhetőségének ellenőrzéséhez használjuk, ha léteznek. Ez a kifejezés Visszaküld TRUE, ha az egyik belső kifejezés visszatért legalább egy mondat, nem számít "1", minden hangszóró vagy asztal. Az átalakított adatokat elvileg nem használják. Így az adatátvitel során történő forgalom tömörítése, logikusabb az "1" használatához, az alábbiak szerint:

Ha létezik (válassza az 1-et a sysobjects-től
Ahol név \u003d "mytable" és típusa \u003d "u")

5. Használja a PRY-CATCH-t, hogy elkapja a hibákat: 2005-ig a kiszolgálók minden egyes kérés után hatalmas számú hibaüzenetet írtak az eljárásban. További kódok mindig több erőforrást és több időt fogyasztanak. 2005 óta SQL Server "ohm megjelent a helyesebb és kényelmes módon A probléma megoldásai:

Kezdje meg.
--a kód
Vége próbálja meg.
Kezdje elkapni.
- Kódja nyugodt hibák
Végső fogás

Következtetés
Elvileg, ma van mindent. Ismét ismételtem ismételten, hogy itt csak azok a technikák, amelyeket személyesen használtam a gyakorlatban, és garantálhatom a hatékonyságukat.

P.S.
Első hozzászólásom, ne ítélj szigorúan.