Mentse el az eljárásokat SQL-be. Vidalennya eljárások, amelyeket meg kell tenni. RETURN hivatkozás a mentett eljárásokhoz

Ha a következő eljárásokat kell menteni, és ha vétkes vagyok egy utasítás megnyerésében az SQL Serverben?

Engedjék meg, hogy dinamikus italokat készítsenek, hogyan javíthatjuk a paramétereket?

Melyikük a leglátványosabb, és melyik a legjobb, és melyik a legkevésbé?

Nézd át, vagy a mentés alatt álló eljárásokat, folyamatosan kímélik a memóriát?

Mit jelent mondjuk az, hogy az utasítások egy virtuális táblázatot, az eljárások pedig egy anyagtáblázatot?

Légy kedves, szólj a pöttyökről, yakscho bűzről.

Megoldások gyűjtése a webről a "Miért van különbség az eljárások, a megtakarítások és az adók között?"

Megtekintés є virtuális asztal. Jöhet a beadványban szereplő táblázatok számához, és nyerheti meg az adatszolgáltatási pályázatot, mivel az adatok egy táblázatban kerültek megtalálásra.

A kiválasztott funkció paramétereinek kiválasztásának eljárása el lett mentve ... így az adatok beszúrása vagy a többi érték vagy az adatkészlet elforgatása frissül.

Létrehozott értesítéseket és eljárásokat, amelyeket elmentenek – hogy megbosszulják a Microsoft információit ezekről, és miért nyerik meg őket.

Tegyük fel, hogy van két táblázatom:

tbl_user Stovptsi: .user_id, .user_name, .user_pw

tbl_profile Stowpci: .profile_id, .user_id .profile_description

Szóval, mivel ezeket a táblákat próbálom lekérni SOK... ehelyett, hogy a CLEAR peice sql-ben dolgozhassak, egy kinézetet használnék, például:

LÉTREHOZÁS Nézet vw_user_profile AS Válassza ki az A.user_id, B.profile_description FROM FROM tbl_user A bal csatlakozását a tbl_profile B-hez az A.user_id = b.user_id GO-n

Ezért a jövőben szeretnék kérni egy profile_description-t a koristuvach azonosítójához ... mindent, amit el kell rabolnom,

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Ez a kód módosítható a mentett eljárásban, például:

Eljárás létrehozása dbo.getDesc @ID int AS begin SELECT profile_description FROM vw_user_profile WHERE user_id = @ID END GO

Ezért telefonálhatok

Dbo.getDesc 25

és eltávolítom a leírást a koristuvach 25 de 25 azonosítójához - az Ön paramétere.

Nyilvánvaló, hogy a BAGATO több, de a fő gondolat kevesebb.

A hátoldalon meg kell értened, hogy a sértések különböző beszédek. Az eljárások megtakarítása inkább az INSERT-UPDATE-DELETE utasításoknál győzedelmeskedik. Ezeket a beadványokat a SELECT utasítások igazolják. és győztes neheztelésben vagy bűnös.

A kilátásban nem lehet adatokat módosítani.

Vessen egy pillantást: Ez egy virtuális tábla, amely különböző valós adatbázistáblák egy vagy több sorából és oszlopából áll. Tse sablon rowk_v és stovpts_v k_lkoh tábla. Itt semmilyen paramétert nem adhat meg.

Mentési eljárások: használjon SQL-utasításokat előre, amelyekhez szerkesztheti a paramétereket, például a bemeneti adatokat, és eltávolíthatja a kimeneti adatokat.

A megjelenések szerepelhetnek a mentett eljárásban, de a mentett eljárás nem szerepelhet a Nézetekben…!

A shovischa eljárás akkor győzedelmeskedik, ha a sima SQL egyszerűen nem elég. A mentési eljárásokat módosítani kell, a ciklusokat és az egyéb eljárások ciklusait el kell menteni. Tse mova programozás, nem mova zapitіv.

    A megjelenés statikus. Gondoljon rájuk úgy, mintha új, egyszerű elrendezésű táblázatok lennének, és a bennük lévő adatok kényelemből jönnek létre, egy helyettesítő jegyzet segítségével, amivel mindent létrehozott. Mint minden SQL-táblában, itt is rendezhet és szűrhet a WHERE, GROUP BY és ORDER BY szerint.

    Tse, hogy tedd félre azt a tényt, hogy dolgozol.

    Tse, hogy az adatok alapjában helyezkedjen el. Elnézést, csak futtassa a lekérdezést, és szűrje le az eredményt. És mégis, az adatbázisok, mint például az Oracle, lehetővé teszik „materializált” utasítások létrehozását, mint a főtáblázatban, mivel ezek automatikusan frissülnek, amikor megváltoztatja az alapvető adattípust.

    Az utasítás materializálása lehetővé teszi indexek létrehozását az utasítás oszlopaiban (különösen a számított oszlopokon, amelyek az adatbázisban sehol nem találhatók).

    nem értem mit mondasz.

A fő különbség abban rejlik, hogy ha nyilatkozatot kér, akkor a megjelölés bekerül a kérésébe. Az eljárás hozhat eredményeket, de össze van állítva és olyan gyors. A második lehetőség az értesítés indexelése.

Az SQL View egy virtuális tábla, amely az SQL SELECT lekérdezésen alapul. A pályaműveket egy vagy több adatbázistáblázatra vagy más pályázatokra kell benyújtani. Az adatbázis ezen aprólékos jele, csakúgy, mint az elvégzett eljárás, Transact-SQL utasítások csoportja, amelyek egyetlen végrehajtási tervbe vannak hajtva.

A Pereglyad egy egyszerű demonstráció az adatokról, amelyeket adatbázis táblákba mentünk, akárcsak egy operátorcsoport által mentett eljárást, amelyet vikonozni lehet.

Filed több, oscillki vodobrazhae adatokat a táblázatból, hogyan kell kérni, mint az eljárás a gyűjtemény sql-utasítások.

A cikk megfordítása: A mentett eljárások áttekintése. Pont azokat, amiket te suttogsz

@Patricknak ​​igaza van, ha azt mondod, hogy na, nézzük meg a másik ételedet, hozz létre egy nézetet magadnak a memóriában, és a parlagon belül írd be: Joins, Data és még ha az aggregációt bontják is, akkor is megnézheted éhes.

Mentse el az eljárást, hogy mentse az összes munkáját a Temp Hash Table helyettesítéseivel, például #tmpTable1, vagy segítségért a @tmpTable1 memóriájába. Zalezhno v_d, amit mondani akarsz.

Az alkalmazott eljárás hasonló egy függvényhez, de közvetlen neveken hívják. zamіst funktsіy, yakі valójában vikoristovuyutsya a kérés közepén.

Nyilvánvaló, hogy az asztalok legtöbbször a memóriában vannak, mert nem kell sok pénzt elvinni.

Maheshnek nincs igaza, ha megengedi a bort, nem tudod megváltoztatni a tribute-ot az adóból. Apa, nézz Patrickre

LÉTREHOZÁS Nézet vw_user_profile AS Válassza ki az A.user_id, B.profile_description FROM FROM tbl_user A bal csatlakozását a tbl_profile B-hez az A.user_id = b.user_id oldalon

Frissíthetem az adatokat... mint egy fenéket, ki tudom deríteni, hogy ez egy cich...

A vw_user_profile frissítése Állítsa be a profile_description="Manager"-t, ahol user_id=4

A tbl_profile frissítése Állítsa be a profile_description="Manager" értéket, ahol user_id=4

Nem illesztheti be a deklarációba, mivel a teljes táblában nincs minden mező, és feltételezem, hogy a PROFILE_ID az elsődleges kulcs, és nem lehet NULL. Azonban beszúrhat egy INSERT-et is a vistavu...

Létrehoztam egy alkalmazást a főasztalhoz, vicorist ...

Nézet létrehozása Szemét, mint a SELECT * nézet

Szúrja be a kéretlen (kód, név) értékeket ("glyn", "Glyn Roberts"), ("Mary", "Maryann Roberts")

DELETE from Junk Where ID>4

І INSERT, і DELETE ugyanazon a ponton működött

Nyilvánvalóan nem tudod megváltoztatni, hogy a mezők azok, aggregációk-e, vagy védettek-e, vagy utasítások-e, ha csak direkt utasítások, akkor módosíthatók.

Ha egynél több táblázatot látott, nem illeszthet be és nem láthat, de ha egynél több táblázatot látott, akkor hangozhat.

Amellett, hogy további megjegyzéseket kívánok jelezni, szeretnék némi tiszteletet adni a Nézetekkel kapcsolatban.

  1. Ajándékok lehet győztes a prikhovuvannya összecsukható. Mutassa meg a saját forgatókönyvét, amelyben 5 ember dolgozik a projekten, és közülük csak az egyik csapat már adatbázissal, például összecsukható társításokkal. Ilyen forgatókönyv esetén borok jöhetnek létre, amelyeket a csapat többi tagja is könnyen kérhet, és büdös szilánkok kérdeznek le egy-egy asztalról.
  2. A biztonság könnyen megvalósítható Nézetek. Mondjuk mi spіvrobіtnik táblázatok Fizetés , SSN szám. A polgárok nem vétkesek abban, hogy koristuvachokat keresnek, akik nem nézhetik meg őket. Így készíthetünk értesítést, például a táblázat oszlopait kiválasztva nem jogosítónak, mint pl én igen , vіk ta stb., anélkül, hogy egymásnak ellentmondó megjegyzéseket tennénk (például fizetésről stb., arról, hogy korábban hogyan tippeltek bennünket). Most láthatjuk, hogy engedélyezett a közvetlen kérés a táblákhoz munkavállalóés csak mentse el olvasásra a tárgyból. Ily módon megvalósíthatjuk a biztonságot a segítségért Views.

Hangeljárás

ELJÁRÁS LÉTREHOZÁSA [({BE|KI|INOUT} [,…])]
[DINAMIKUS EREDMÉNY BEÁLLÍTÁSA ]
KEZDŐDIK [ATOM]

VÉGE

Kulcsszavak
. IN (Input) – bemeneti paraméter
. OUT (Output) – kimeneti paraméter
. INOUT - bemenet és kimenet, valamint egy mező (paraméterek nélkül)
. DINAMIKUS EREDMÉNY BEÁLLÍTÁS Azt jelzi, hogy az eljárás meg tudja határozni a kurzorok számát, így az eljárás visszaadása után bezárható.

Megjegyzések
Nem ajánlott sok paramétert megváltoztatni az elmentett eljárásokban (például nagy számok és karakterláncok előtt) a verem revantagálásával. A gyakorlatban a Transact-SQL, a PL/SQL és az Informix alapdialektusai konzisztensek a szabvánnyal, csakúgy, mint a hangos és a különböző paraméterek, a hangos változtatások és a felhasználói felület esetében. A Microsoft javasolja a következő közelítés leállítását a mentett eljárások gyorsítótár méretének értékeléséhez:
\u003d (maximum egyórás munkaidő) * (a legnagyobb részvételi terv kísérlete) * 1.25. Tervtől függően az oldalak bővíthetők a DBCC MEMUSAGE parancs segítségével.

Viklik eljárások

A gazdag DBMS-ek esetében a mentett eljárások listája a kezelő segítségére szolgál:

ELJÁRÁS VÉGREHAJTÁSA [(][)]

jegyzet: Gyors mentési eljárások menthetők programokkal, egyéb menthető eljárásokkal, vagy interaktív módban.

Példa a hangosítási eljárásra

ELJÁRÁS LÉTREHOZÁSA Proc1 AS // elkábítja az eljárást
DECLARE Cur1 200 // elkábítja a kurzort
OPEN Cur1 // nyissa meg a kurzort
FETCH NEXT FROM Cur1 //adatok olvasása a kurzorból
WHILE @@Fetch_Status=0
KEZDŐDIK
HOZZÁ EL A KÖVETKEZŐT Cur1-ről
VÉGE
CLOSE Cur1 // kurzor bezárása
FELVONÁSA Cur1
EXECUTE Proc1 // futtassa az eljárást

Polimorfizmus
Két azonos nevű alprogram hozható létre egy és ugyanabban a sémában, mivel ennek a két alprogramnak a paraméterei egy ilyen világban egy típusúak, így szétválaszthatók. Annak érdekében, hogy egy sémában meg lehessen különböztetni két azonos nevű alprogramot, ezek skinje alternatív és egyedi nevet kap (specifikus név). Ilyen im'ya hozzárendelhető, ha alprogramot fejlesztenek. Ha több azonos nevű alprogramot hívunk meg, a szükséges alprogramok kijelölése egy kis ideig díjat számít fel:
. Gyakrabban minden eljárás hozzárendelt névből van hozzárendelve, ha pedig nincs ilyen, akkor minden funkció adott névből.
. A mélyebb elemzés érdekében ezeket az alprogramokat elhagyjuk, több száz ilyen danitál kaphat privilegizált vikonannya (EXECUTE).
. Їх válassza ті, yakі mayut a paraméterіv számát vіdpodіdaє argumentumok számát vikliku. Az adott pozíciókhoz hozzárendelt adattípusok és paraméterek áttekintésre kerülnek.
. Ha egynél több alprogram veszett el, akkor a legrövidebb minősítéssel rendelkezőt választjuk.
Az Oracle gyakorlatban a polimorfizmus megengedett olyan függvényeknél, amelyek csak csomagokban vannak jelen, [e-mail védett]- Más sémákban, valamint a Sybase-ben és az MS SQL Serverben a fókusz le van tiltva.

Vidalennya és az eljárások megváltoztatása
A távoli eljáráshoz a kezelőt használják:

Az eljárás megváltoztatásához a kezelőt kell kiválasztani:

ELJÁRÁS MÓDOSÍTÁSA [([{BE|KI|INOUT}])]
KEZDŐDIK [ATOM]

VÉGE

A vikonannya eljárások kiváltságai

GRANT EXECUTE ON NAK NEK |NYILVÁNOS [TÁMOGATÁSI OPCIÓVAL]

Rendszereljárások
Egy gazdag DBMS (beleértve az SQL Servert is) ugyanazokkal a rendszereljárásokkal rendelkezhet, így saját céljaira módosíthatja.

Mentési eljárások

Ennek a disztribúciónak a tárgya az egyik legfontosabb eszköz, amelyet az InterBase adatbázisok kiegészítései ismertettek meg a kiskereskedőkkel az üzleti logika megvalósításához. és a feladatok beállításához szükséges kódmennyiség módosítása Gyakorlatilag lehetetlen egy adatbázis-programot a mentett eljárások megváltoztatása nélkül befejezni.
Bár számos széles körben használt eljárás közül lehet választani, amelyek a legtöbb relációs DBMS számára fontosak, az InterBase eljárások gyakorlatilag teljes adathalmazok szerepét tölthetik be, lehetővé téve számukra az eredmények forgatását meghatározott SQL-lekérdezésekben.
Rosobnik, gyakran nyomják, tanulják a soberezhezhe eljárásokat csak yak nabir konkrét sql-zapitiv, yaki szar szorgalmasan szorgalmas, és a prazuvati egy mérföld az idő, és az igazi kézből magas szinten.
Tehát melyek azok az eljárások, amelyeket az InterBase tárol?
A mentett eljárás (CP) az adatbázis-metaadatok része, amelyet a belső InterBase alkalmazási alprogram fordít le, speciális nyelven írva, az InteiBase szerver magjába beillesztett fordító.
Az eljárás mentése meghívható ügyfélprogramokból, triggerekből és egyéb mentett eljárásokból. Az eljárás a szerverfolyamat közepén elmentésre kerül, és az adatbázisban lévő adatokat manipulálhatja, valamint beállíthatja a klienst, hogyan kell rákattintani (ezek trigger, HP, addendum) a nyereményed eredményére.
A HP által lefektetett kemény lehetőségek alapja a procedurális nyelvi programozás, amely saját raktárban is elvégezhető, mint például a nagyszerű SQL javaslatainak módosítása, mint az INSERT, UPDATE és SELECT, valamint az elemzés és az elemzés megszervezése, ill. ciklusok (IF, WHILE), valamint a és hibás helyzetek A mentett Mova eljárások összecsukható algoritmusok megvalósítását teszik lehetővé az adatokkal való munkavégzéshez, és a HP relációs adatokkal való munkára való összpontosítás lényegesen kompaktabb a hagyományos nyelvű hasonló eljárásoknál. .
Meg kell jegyezni, hogy a trigger ugyanazzal a programozással győzedelmeskedik, a bűnözés jellemzői és határai alacsonyak. Vіdmіnnostі pіdmіnnostі pіdnіzhini movi, scho vikoristovuєєtsya trigeryben, vіd mivi KHP állítólag a "Trigeri" részben (1. rész) áttekintve.

Példa egy egyszerű elmentett eljárásra

Elérkezett az óra az első elmentett eljárás létrehozásához, a її fenekén pedig a mentési eljárások létrehozásának folyamata. Ale a következő elejére, hogy néhány szót azokról, hogyan kell gyakorolni az elmentett eljárásokkal. Az InterBase dokumentációja azt javasolja, hogy készítsenek eljárásokat további SQL-szkriptekben lévő fájlokhoz, amelyek a HP szövegének szerkesztésére szolgálnak, mivel azokat az isql interpreter bemenetére küldik, és ily módon hajtsák végre az adott módosítás létrehozását. A HP, mint ebben az SQL-szkriptben a BLR-nek a BLR-eljárás szövegébe való fordításának szakaszában (a BLR-eljárás szövegét lásd Rozdіl "InterBase adatbázisok szerkezete" (4. rész)) elnézést, akkor az isql megmutatja ezeket, melyik sorban az SQL-szkript fájlja winkla tsya pardon. Javítsa ki a megbocsátást, és ismételje meg mindent egymás után. A nagodzsennyáról a szó napi megértésében, vagyis a trasuvannya vykonannya-ról, azzal a lehetőséggel, hogy rácsodálkozz a változás változó jelentésére, nem tudsz kitérni az útból. Nyilvánvaló, hogy egy ilyen pidhid nem felel meg a kiskereskedő szemében megtakarított eljárások privibilitása növekedésének.
Prote, krém a standard minimalista megközelítés a HP fejlesztéséhez<_\ществ\ют также инструменты сторонних разработчиков, которые делают работу с хранимыми процедурами весьма удобной Большинство универсальных продуктов для работы с InterBase, перечисленных в приложении "Инструменты администратора и разработчика InterBase", предоставляют удобный инструментарий для работы с ХП. Мы рекомендуем обязательно воспользоваться одним из этих инструментов для работы с хранимыми процедурами и изложение материала будем вести в предположении, что у вас имеется удобный GUI-инструмент, избавляющий от написания традиционных SQL-скриптов
A mentett eljárások szintaxisát a következő lépés írja le:

ELJÁRÁS név LÉTREHOZÁSA
[(param adattípus [, param adattípus...])]
)]
MINT
;
< procedure_body> = []
< block>
< vanable_declaration_list> =
DECLARE VARIABLE var adattípus;

=
KEZDŐDIK
< compound_statement>
[< compound_statement> ...]
VÉGE
< compound_statement> = (nyilatkozat;)

Látszólag nagyok és nehézkesek lehetnek, de valójában minden még egyszerűbb.
A csikk tengelye ismét egy egyszerű eljárás, amelyet figyelembe veszünk, mivel két számot vesz fel bemenetként, ezeket összeadjuk és az eredményt megforgatjuk:

ELJÁRÁS LÉTREHOZÁSA SP_Add(first_arg DOUBLE PRECISION,
second_arg DUPLA PONTOSSÁG)
VISSZATÉRÉS (DUPLA PONTOSSÁG)
MINT
KEZDŐDIK
Eredmény=first_arg+second_arg;
FÜGG.
VÉGE

Nos, minden egyszerű: a CREATE PROCEDURE parancs után az újonnan létrehozott eljárás neve (amely egyedi lehet az adatbázis határain) kerül megadásra - ehhez az SP_Add drophoz, majd a karokhoz, amelyeken keresztül a bemeneti paraméterek a A HP típus visszaállítása - first_arg és second_arg - a hozzárendelt értékekből.
Az ELJÁRÁS LÉTREHOZÁSA operátor - kihagyások nem nyelvi részének bemeneti paramétereinek listája akkor jár be, ha a munkafolyamatához tartozó összes adatot az eljárástörzs közepén lévő táblázatba további bevitelként veszi.

A mentett eljárásokban vannak InteiBase skaláris adattípusok

Adja meg a RETURNS kulcsszót, amely után a paraméterek átrendeződnek az ívekben, amelyeket a hozzárendelt típusoknak megfelelően elforgatunk - ebben a kategóriában csak egy - Eredmény.
Hogy az eljárás nem hibás a paraméterek, a RETURNS szó és a forgatandó paraméterek listája napi elforgatásában.
Az AS RETURNSQ kulcsszó megadása után. Az AS kulcsszó előtt cím,és egy új után - techo eljárások.
A felvett eljárás törzse a belső (lokális) változások leírásának másolata (mint a bűz, alább megnézzük), amelyeket egy kóma (;) utáni pont és egy blokk oszt el. operátorok közül, az operátorívben helyek BEGIN END. Ebben az esetben a HP törzse még egyszerűbb - kérjük, adjon hozzá két bemeneti argumentumot, és csatolja az eredményt a kimenethez, majd hívja meg a SUSPEND parancsot. Trohi pіznіshe roz' egyértelmű a di ї tsієї parancs lényege, de egyelőre lényeges, hogy a parametrіv átviteléhez szükséges, hogy oda forduljanak, a bula viklikan csillagai megmentették az eljárást.

Az eljárások mentett változatai

Tartsa tiszteletben, hogy a beavatkozás közepén lévő kezelő kómával (;) fog végződni. Úgy tűnik, az a pont, amikor a szabványos SQL parancselosztó ki van kapcsolva, egy jelzés az SQL értelmező számára, hogy a bevezető parancs szövege helyes és feldolgozásra szorul. Chi nem látja így, scho, amely egy foltot mutat kómával a HP közepén, az SQL értelmező felismeri, hogy a parancsot pontosan beírták, és megpróbálja vikonat az eljárás egy részét, mit vesz? Tse pripuschennya nem maє sensu. Például, ha létrehoz egy fájlt, amelybe több útmutatást ír, mint egy példát, hozzáadja az adatbázisból induló parancsot, és megpróbálja az SQL szkriptet az isql interpreter segítségére, akkor a bocsánat megfordul, ki, hogy következetlen, a tolmács gondolata szerint a parancs végén a végrehajtott eljárások létrehozása. Ahhoz, hogy további SQL-parancsfájlokhoz mentési eljárásokat hozhasson létre, az InterBase kereskedő speciális eszközei nélkül, szükséges, hogy a skin parancs létrehozza a HP-t (ugyanez vonatkozik a triggerekre is) inspirálja a jógát. Az isql parancs, amely megváltoztatja az SQL javaslatosztót, így néz ki:

HATÁZAT BEÁLLÍTÁSA

Az eljárás létrehozásának tipikus módja a következőképpen néz ki:

TERM BEÁLLÍTÁSA ^;
ELJÁRÁS LÉTREHOZÁSA some_procedure
... . .
VÉGE
^
TERMÉK BEÁLLÍTÁSA ;^

Heti megtakarítási eljárások

Térjünk rá eljárásunkra, mire ügyeljünk. Most, ha létrejött, meg kell hívni, át kell adni a paramétereket és el kell venni az elforgatott eredményeket. Még egyszerűbb ezt megtenni - elég egy SQL-lekérdezést írni a sértő megjelenéshez:

KIVÁLASZT*
FROM Sp_add (181.35, 23.09)

Tsei arra kér minket, hogy fordítsunk egy sort felénk, ami csak egy Eredmény mezőt vesz el, amelyben a 181,35 és 23,09, majd a 204,44 számok összege módosul.
Ily módon eljárásunk feltörhető speciális SQL lekérdezésekben, amelyek a kliensprogramokhoz hasonlóan feltörnek, valamint más HP-ban vagy triggerekben. Eljárásunk ezen változata azáltal vált lehetővé, hogy a SUSPEND parancsot hozzáadtuk a végrehajtandó eljárás végéhez.
A jobb oldalon az InterBase-ben (és annak összes klónjában) kétféle eljárás van elmentve: kiválasztható eljárások és végrehajtható eljárások. Az a tény, hogy a robotok kétféle HP-vel rendelkeznek, összefügg azzal a ténnyel, hogy a kiválasztási eljárások egy sorban csoportosított, személytelen bemeneti paraméterkészlet elforgatását kérik, mivel előfordulhat, hogy egy adathalmazt néznek meg, és a vikonációs eljárások vagy nem forgathatják el a paramétereket, vagy önállóan is elforgathatják őket a Returns-ban, egy paramétersorban. A kiválasztott eljárások a SELECT lekérdezések mellett kerülnek meghívásra, a meghívott eljárások pedig az EXECUTE PROCEDURE parancs súgóját követik.
Miután megsértődött az elmentett eljárások, az azonos szintaxis létrehozása és formálisan semmit nem vitatva, akkor lehet-e viklikana az eljárás a SELECT lekérdezésben és az eljárás-kiválasztás az EXECUTE PROCEDURE segítségét szolgálja-e. A táplálkozás abban rejlik, hogy a CP hogyan viselkedik a különböző típusú gonoszságokkal. Más szóval a különbség az énekes hetilap eljárásának kialakításában különbözik. Tehát a kiválasztási eljárás kifejezetten a SELECT lekérdezéshez, a kiválasztott eljárás pedig kifejezetten az EXECUTE PROCEDURE lekérdezéshez jön létre. Vessünk egy pillantást arra, hogy milyen erőket veszünk figyelembe e két HP típus tervezése során.
Megérteni, hogyan kell gyakorolni az eljárás-vibrációt, kicsit belemerülni az elméletbe. Vegyünk egy egyszerű SQL-lekérdezést, például SELECT ID, NAME FROM Table_example. Ennek eredményeként figyelembe vesszük a kimeneti táblát, amely két oszlopból (ID és NAME) és ugyanannyi sorból áll (a Táblázat_példa táblázatban azonos sorok száma). A lekérdezés eredményeivé alakítva a táblát SQL adatkészletnek is nevezik. . Ezután a szerver beolvassa a skin rekordot, amely elküldi a kérés eredményét, kiválasztja belőle a szükséges mezőket (ID és NAME esetén) és elküldi az üzenetet a kliensnek. Ismételjük meg a folyamatot újra - és így a bőr vibrációs rekord.
Minden lépésre szükség van ahhoz, hogy egy okos olvasó megértse, hogy az összes SQL adatkészlet sorban jön létre, beleértve a mentett eljárásokat is! Az eljárások fő irányítója - az eljárások kiválasztása, amelyek azon a tényen alapulnak, hogy az elsőket arctalan sorok forgatására tervezték, a többiek pedig csak egyet. Ezért a bűz zastosovyatsya más módon: az eljárás-kiválasztás a SELECT parancsot kéri, mint a "wimage" az eljárásban, hogy ellenőrizze az összes rekordot, hogy megfordítsa. Az eljárás, amelyet úgy hívnak, segítséget kér AZ ELJÁRÁS VÉGREHAJTÁSA, például a "wiymaє" a HP-tól csak egy sor, és a reshta (navit, ami büdös!) Figyelmen kívül hagyja.
Vessünk egy pillantást a kiválasztási eljárás példájára, hogy érthetőbb legyen. A > Megbocsátás esetén mentsük el az eljárást, yak pratsyuє így magát, yak kérdezzen SELECT ID, NAME FROM Table_Example, így nem tudja majd kiválasztani az ID і NAME z usієї táblázatokat. Tengely tsey butt:

ELJÁRÁS LÉTREHOZÁSA Simple_Select_SP
VISSZATÉRÉS (
procID INTEGER,
procNAME VARCHAR(80))
MINT
KEZDŐDIK
FOR
SELECT ID, NAME FROM table_example
INTO:procID, :procNAME
DO
KEZDŐDIK
FÜGG.
VÉGE
VÉGE

Vessünk egy pillantást a Simple_Select_SP nevű eljárásra. Valójában nincs bemeneti paraméter, és két kimeneti paraméter – ID és NAME. Naytsіkavіshe, zvichayno, polagaє a tіlі eljárásban. Íme a FOR SELECT konstrukció:

FOR
SELECT ID, NAME FROM table_example
INTO:procID, :procNAME
DO
KEZDŐDIK

/* meg kell változtatnunk a procID-t és a procName-et */

VÉGE

Ez a kis kódrészlet egy lépést jelent: a Table_example táblából kiválasztott skin sorhoz válassza ki a változás procID és procName értékét, majd adja hozzá a változás értékét.
Kidolgozhatja a megjelenést és kérheti: "Változás? Hogyan változzon másként 9" Ha hasonló a különbség meglepetéséhez - aki a mentett eljárásokban van, akkor megnyerhetjük a változást. A HP nyelvén a procedúra közepén helyi változtatásként hangozhat, a bemeneti és kimeneti paramétereket pedig megváltoztatva verheti.
A mentés alatt álló eljárás helyi változásának deklarálásához az AS kulcsszó után és az első BEGIN szó előtt leírást kell beilleszteni. A helyi változtatás leírása így néz ki:

VÁLTOZÓ BEJELENTÉSE ;

Például a Mylnt lokális változás hosszának bejelentéséhez be kell szúrni az AS és a BEGIN sértő leírás közé.

DECLARE VARIABLE MyInt INTEGER;

A fenekünkben lévő változtatások két darabból készülnek. Ennek az az oka, hogy a FOR SELECT SQL-parancs közepén kell ezeket módosítani, a SELECT-ben kiválasztott táblákban a mezőket szétválasztani, megváltoztatásához pedig a többi duplát át kell vinni. Még ha módosítod is, ugyanazt a nevet adhatod, mint a táblázatok mezőit!
Ale dvokrapka a neve előtt a változás szükséges nyerni csak a közepén SQL lekérdezések. Pózolj a fenevad szövegeivel, hogy halálra harcolj dvokrapka nélkül, például:

procName="Valamilyen név";

Térjünk rá eljárásunk törzsére. A FOR SELECT javaslat elforgatja az adatokat a vizuális táblák felett – egy adathalmaz, és soronként. Az elforgatott bőrmező a saját változásában helyezhető el: ID => procID, NAME => procName. A DO és a változtatások egy részében a SUSPEND parancs segítségét kérik a klienstől, aki a> p> eljárást hívta.
Ily módon a FOR SELECT... DO parancs a parancs SELECT részében kiválasztott rekordok hurkát szervezi. Ugyanabban a ciklusban, amely a DO részét képezi, a tervezett rekord átvitele az ügyfélhez a további SUSPEND parancs után befejeződik.
A kiválasztási eljárást egy vagy több sor elforgatása is felismeri, amelyhez a HP törzs közepén egy ciklust szerveznek, amely visszaállítja az ebből eredő paraméterváltozásokat. Például a SUSPEND parancsot a ciklus utolsó ciklusához kell használni, mintha az adatsort a kliens felé fordítaná.

Ciklusok és kezelők

A Krim parancsok: FOR SELECT... DO, amely egy ciklust szervez a tetszőleges rekordokból, egy másik típusú ciklus - WHILE...DO, amely lehetővé teszi egy ciklus megszervezését bármely elme újraellenőrzése alapján. Tengely készlet HP, scho vikoristovu ciklus WHILE. DO. Ez az eljárás elforgatja az egész számok négyzetét 0-ról 99-re:

PROCEDJRE QUAD LÉTREHOZÁSA
VISSZATÉRÉS (QUADRAT INTEGER)
MINT
DECLARE VARIABLE I INTEGER;
KEZDŐDIK
i = 1;
Miközben én<100) DO
KEZDŐDIK
QUADRAT=I*I;
I=I+1;
FÜGG.
VÉGE
VÉGE

A SELECT FROM QUAD kérés eredményeként szükségünk van egy táblára, amely felváltja a QUADRAT egy sorát, amelyben 1 és 99 közötti egész számok négyzetei lesznek.
Az SQL-rezgés és a klasszikus ciklus eredményeinek számbavételéhez a mentett mozgatási eljárásokban az IF...THEN..ELSE operátor kerül kiválasztásra, amely lehetővé teszi a lehatárolás megszervezését a visszaesésben lévő tévedésben. a jövőben, függetlenül attól, hogy a szintaxis hasonló-e a legtöbb dekompressziós operátorhoz a magas szintű lépések programozásában, Pascal négyzetén és Cі-n.
Nézzük meg a megmentendő eljárás összehajtható példáját, hogy kiraboljuk a lábunkat.

  1. Számítsa ki az átlagárat a táblázatban Table_example (div. division "Tables Primary Keys and Generators")
  2. Dali a bőrrekordot a táblázatban kezdje el újra ellenőrizni, mivel a fő ár (PRICE) magasabb, mint az átlagár, majd állítsa be az árat az átlagár értékével, plusz állítsa be a víz rögzítését
  3. Ha az ár alacsonyabb vagy magasabb, mint az átlagár, akkor állítsa be az árat a teljes árral, plusz az átlagár közötti kiskereskedelmi ár felével.
  4. Az összes sormódosítás elforgatása a táblázatban.

A cob-nál a HP neve a jelentős, valamint a bemeneti és kimeneti paraméterek Mindent az eljárás fejlécébe írnak, ami elmentésre kerül

ELJÁRÁS LÉTREHOZÁSA IncreasePrices(
2. százalék DUPLA PONTOSSÁG növelése)
VISSZATÉRÉS (ID INTEGER, NÉV VARCHAR(SO), új_ár DOUBLE
PRECISION AS

Az eljárás neve IncreasePrices lesz, egy Peiceni21nciease bemeneti paraméterrel rendelkezik, amely DOUBLE PRECISION típusú lehet, és 3 bemeneti paraméterrel - ID, NAME és new_pnce. Kérjük, vegye figyelembe, hogy az első két paraméternek ugyanaz a neve, mint a Table_example tábla mezőinek, amelyekkel az elemzést választjuk. Tse megengedett a szabályok a mov eljárások, amelyek mentve.
Most a mi hibánk, hogy hangot adunk a helyi változásnak, így Ön lesz a győztes az átlagérték megőrzése érdekében. Így fog kinézni:

DECLARE VARIABLE avg_price DUPLA PONTOSSÁG;

Most térjünk át az eljárás törzsére, amelyről gondoskodunk Kulcsszó BEGIN.
Az algoritmusunkhoz először számolnunk kell - számítsa ki az átlagárat. Akinek ilyen jellegű kéréssel siettünk:

AVG KIVÁLASZTÁSA(ár_l)
FROM Table_Example
INTO:átlag_ár,-

Ez betáplálja az AVG változó összesítő függvényét, így elforgatja a PRICE_1 mező átlagos értékét a kiválasztott sorok átlagában – a PRICE_1 érték átlagát az összes táblázathoz Table_example. A kérés által elforgatott érték az avg_price change mezőbe kerül. A tisztelet visszaállítása, amely avg_pnce-re módosul egy dupla csapás előtt, hogy újraélesztjük a kérésben győztes vizeket.
Ennek a kérésnek az a sajátossága, hogy mindig szigorúan egyetlen bejegyzést ellenőriznek. Az ilyen kéréseket singleton-kéréseknek nevezzük, és csak ezek a lehetőségek választhatók a mentett eljárásokban. Ha egynél több sort akarunk elforgatni, akkor azt a FOR SELECT...DO struktúrában kell kitölteni, hogy az elforgatott skin sor feldolgozására ciklust szervezzünk.
Otzhe, megkaptuk az ár átlagos értékét. Most át kell nézni az összes táblázatot, össze kell hasonlítani a skin rekordban szereplő ár értékét az átlagárral, és élni kell a
A csutkán a Table_example táblázatból szervezzük meg a skin rekord rendezését

FOR
VÁLASSZON ID, NÉV, PRICE_1
FROM Table_Example
INTO:ID, :NAME, :new_price
DO
KEZDŐDIK
/*_itt nyitjuk meg a skin rekordot*/
VÉGE

Ha a terv megváltozik a Table_example táblázatból, a skin sorban lévő adatok és öntözési értékek megváltozott azonosítót kapnak, NAME és new_pnce. Nyilván ne feledje, hogy ennek eredményeként a kiválasztott adatok elforgatódnak, nem varto: a kimeneti paraméterek hozzárendelése nem jelenti azt, hogy a kliens elutasítja a HP kliens qi értékét! A paraméterek átvitele csak a SUSPEND parancs letiltása esetén lehetséges, előtte pedig elsődleges változtatásként módosíthatjuk a paramétereket - alkalmazásunkban a new_price paraméterrel is dolgozunk.
Valamint a BEGIN.. END ciklus törzsének közepén módosíthatjuk a skin sor értékét. Emlékszel, elengedhetetlen, hogy tudnunk kell, hogy az átlaghoz képest emelkedjünk, és a régi időket éljük. A mi illesztési Qiu eljárás az IF operátor segítségével valósul meg:

HA (új_ár > átlagár) AKKOR /*tehát az aktuális ár magasabb az átlagárnál*/
KEZDŐDIK
/*majd állítson be egy új árat, amely megegyezik az átlagár értékével, plusz százas rögzítéssel */
új_ár = (átl._ár + átlagos_ár*(Százalék2Növekedés/100));
UPDATE Table_example
ÁR_1 = :új_ár BEÁLLÍTÁSA
WHERE ID =: ID;
VÉGE
MÁS
KEZDŐDIK
/* Ha a tényleges ár alacsonyabb vagy magasabb, mint az átlagár, akkor az árat a teljes árral, plusz a kiskereskedelmi ár felével határozzuk meg az átlagár között */
új_ár = (új_pnce + ((átl._pnce új_ár)/2)) ;
UPDATE Table_example
ÁR_1 = :új_ár BEÁLLÍTÁSA
WHERE ID = .ID;
VÉGE

Mint egy bachit, nagyon jó volt befejezni a nagyszerű IF konstrukciót, fontos megbeszélni, szóval ne kommentelj, inkább írd be a /**/ szimbólumot.
Annak érdekében, hogy az árat ugyanúgy módosítsuk a számított kiskereskedelmi árra, felgyorsítjuk az UPDATE operátort, amely lehetővé teszi a tényleges rekordok - egy vagy több - módosítását. Annak érdekében, hogy egyértelműen kijelenthessük, melyik rekordban kell módosítani az árat, kiválasztjuk az elsődleges kulcs WHERE mezőjét, amely megegyezik a változás értékével, amelyben a streaming rekord ID értéke kerül: ID=:ID . Fogadja el a tiszteletet, hogy az azonosító megváltozik a dupla előtt.
Az IF...THEN...ELSE konstrukció megváltoztatása után a megváltozott ID, NAME és new_price adatokkal rendelkezik, mivel a mi felelősségünk, hogy a klienst az eljárás hívására fordítsuk. A következő HA-hoz be kell szúrni a SUSPEND parancsot, hogy oda küldjék az adatokat, a csillagokat a HP-nak hívják. A SELECT...DO nem iterálja a kérésében szereplő összes rekordot.
Meg kell adni, hogy a SUSPEND parancsot használjuk, így csak a mentendő eljárást, az EXIT parancsot használjuk, így a sor átvitele után az eljárás mentésre kerül. Az EXIT parancsot azonban ritkán kell kitölteni, a chipekre főként azért van szükség, hogy a ciklust az elme által elérhető helyen megszakítsák.
Tartalék esetén, ha az eljárást a SELECT utasítás hívta meg, és az EXIT parancsot fejezte be, a fennmaradó sort nem forgatja el. Tobto, ha meg kell szakítania az eljárást, és továbbra is folytatnia kell a sort, fel kell gyorsítania a szekvenciát

FÜGG.
KIJÁRAT;

Az EXIT fő jellemzője az egytonos adathalmazok kiválasztása, amelyek elforgatott paraméterek a parancsikonban az EXECUTE PROCEDURE-n keresztül. Ebben az esetben a külső paraméterek értékei be vannak állítva, de az SQL adatgyűjtés nem jön létre, és az eljárás véget ér.
Írjuk le ismét eljárásunk szövegét, hogy az anya egy pillantással felfoghassa ezt a logikát:

ELJÁRÁS LÉTREHOZÁSA IncreasePrices(
2. százalék DUPLA PONTOSSÁG növelése)
VISSZATÉRÉSEK (ID INTEGER, NÉV VARCHAR(80),
new_price DUPLA PRECISION) AS
DECLARE VARIABLE avg_price DUPLA PONTOSSÁG;
KEZDŐDIK
AVG KIVÁLASZTÁSA(ár_l)
FROM Table_Example
INTO:átl.ár;
FOR
VÁLASSZON ID, NÉV, PRICE_1
FROM Table_Example
INTO:ID, :NAME, :new_price
DO
KEZDŐDIK
/*itt dolgozzuk fel a bőrrekordot*/
HA (új_pnce > avg_price) AKKOR /*tehát a jelenlegi ár magasabb az átlagárnál*/
KEZDŐDIK
/*Állítson be új árat, amely megegyezik az átlagárral, plusz százas rögzítéssel */
új_ár = (átl._ár + átlagos_ár*(Százalék2Növekedés/100));
UPDATE Table_example
ÁR_1 = :új_ár BEÁLLÍTÁSA
WHERE ID =: ID;
VÉGE
MÁS
KEZDŐDIK
/* Ha a tényleges ár alacsonyabb vagy magasabb, mint az átlagár, akkor az árat a teljes árral egyenlőnek állítom be, plusz a kiskereskedelmi ár felét az összeg és az átlagár között */
új_ár = (új_ár + ((átl._ár - új_ár)/2));
UPDATE Table_example
ÁR_1 = :új_ár BEÁLLÍTÁSA
WHERE ID =: ID;
VÉGE
FÜGG.
VÉGE
VÉGE

Dán példa a mentett eljárásra, amely a movi mentési eljárások és triggerek fő konstrukcióinak fejlődését szemlélteti. Nézzük meg, hogyan lehet javítani azokat az eljárásokat, amelyeket néhány gyakran hibáztatott feladat elvégzésére mentünk el.

Mentett rekurzív eljárások

A mentett InterBase eljárások rekurzívak lehetnek. A Tse azt jelenti, hogy a mentett eljárásokat felhívhatja magának. Legfeljebb 1000 befektetett eljárás engedélyezett, amelyek mentésre kerülnek, azonban ne feledje, hogy a szerveren rendelkezésre álló erőforrások korábban elfogyhatnak, így alacsonyabb lesz a maximális HP beruházás.
A menthető eljárások egyik legszélesebb köre az adatbázisba mentett faszerű struktúrák feldolgozása. A fák gyakran megsérülnek a raktárkezelésben, a raktárban, a személyzetben és más széles körű kiegészítésekben.
Vessünk egy példát arra az eljárásra, amely szerint az első azonos befektetéstől kezdve hogyan válasszuk ki az összes azonos típusú árut.
Hadd jöjjek a feladat megfogalmazásához: hozhatok-e árukat ilyen hierarchikus szerkezettel:

Áruk
- Pobutova technika
- Hűtőszekrények
- Három kamra
- Kétkamrás
- Egykamrás
- Takarítógépek
- Függőleges
- frontális
- Klasszikus
- Vuzki
- Számítógépes technológia
....

Tsya szerkezete dovіdnika categorіy varіv_v lehet anya g_lki raznoї glibini. és idővel fel is épülnek. Küldetésünk, hogy a nap végének minden eleméből válogatást nyújtsunk a "köznév felolvasásától", bármely vuzlától kezdve. Például, ha a "Palny autókat" választjuk, akkor a következő kategóriákat kell figyelembe vennünk:

Ragasztógépek - Függőleges
Frontális autók - Frontális klasszikus
Elülső autók – Magasabb frontális autók

A táblák felépítése jelentős az áruk előrehaladásáról szóló információk gyűjtése szempontjából. Leegyszerűsítettem a fa egy táblázatba rendezésének sémáját:

TÁBLÁZAT LÉTREHOZÁSA GoodsTree
(ID_GOOD INTEGER NEM NULL,
ID_PARENT_GOOD INTEGER,
GOOD_NAME VARCHAR (80),
megszorítás pkGooci elsődleges kulcs (ID_GOOD));

Létrehozunk egy GoodsTree táblát, amelyben csak 3 mező van: ID_JÓ - egy ésszerű kategória azonosító, ID_PARENT_JÓ - az adott kategória azonosítója és GOOD_NAME - a kategória neve. A táblázat adatainak sértetlenségének biztosítása érdekében a hívási kulcs cseréjére feltesszük a táblázatba:

ALTER TABLE GoodsTree
KORLÁTOZÁS HOZZÁADÁSA FK_goodstree
IDEGEN KULCS (ID_PARENT_GOOD)
REFERENCIÁK GOODSTPEE (ID_GOOD)

Az asztal önhordó, és ugyanazt a régi kulcsot kell követnie. schob az asztalnál buv posilan az ismeretlen apákon, і navіt reshkodzhaє próbálja látni az áruk kategóriáját, yakі mayut nashchadki.
Tegyük fel a következő adatokat tartalmazó táblázatunkba:

ID_JÓ

1
2
3
4
5
6
7
8
9
10
11
12

ID_PARENT_JÓ

0
1
1
2
2
4
4
4
5
5
10
10

JÓ NÉV

ÁRUK
Pobutov technika
Számítógépek és tartozékok
Hűtőszekrények
Takarítógépek
Trichamber
Kétkamrás
Egykamrás
Függőleges
Elülső
Vuzki
klasszikus

Most, ha van helyünk az adatok gyűjtésére, folytathatunk egy mentési eljárás létrehozását, amely az összes „maradék” árukategóriát eltávolítja a „kirúgott” kategóriából - például a „Három” kategória esetében. -kamra" a kategórián kívül így fog kinézni: " Pobutov tehnіka Refrigerators Trikamernі".
A faszerű struktúrákat ápoló eljárások saját terminológiát fejlesztettek ki. A fa bőrelemét csomónak nevezik; a csomók közötti kékeket pedig, amelyek egymáshoz húzódnak, az öreg csizmájának nevezik. A fa legvégén elhelyezkedő, naschadkiv-t nem hozó vuzlikat "leveleknek" nevezik.
Minden mentendő eljárásnál a bemeneti paraméter a kategória azonosító lesz, valamiért elkezdjük a rendezést. A matime eljárás a következőképpen van elmentve:

A GETFULLNAME ELJÁRÁS LÉTREHOZÁSA (ID_GOOD2 EGÉSZ SZÁM MEGJELENÍTÉSE)
VISSZATÉRÉS (FULL_GOODS_NAME VARCHAR(1000),
ID_CHILD_JÓ INTEGER)
MINT
CURR_CHILD_NAME VÁLTOZÓ DECLARE VARCHAR(80);
KEZDŐDIK
/*0rgan_zuєmo zovnіshnіy ciklus FOR SELECT bezporednіmi termékcímkékhez ID_GOOD=ID_GOOD2SHOW */
FOR SELECT gtl.id_good, gtl.good_name
A GoodsTree gtl
WHERE gtl.id_parent_good=:ID_good2show
INTO:ID_CHILD_JÓ, :teljes_áru_neve
DO
KEZDŐDIK
/"Kiegészítő EXISTS függvény ellenőrzése, tehát TRUE-ra forgatva, mintha egy sor kerülne a bilincseknél. Ha a talált csomópontnak ID_PARENT_GOOD = ID_CHILD_GOOD nincs parancsikonja, akkor az a fa "levele" és ennek eredményeként elfogy. */
HA (NOT EXISTS(
SELECT * FROM GoodsTree
WHERE GoodsTree.id_parent_good=:id_child_good))
AKKOR
KEZDŐDIK
/* Adja át a fa ívét az eredménynek */
FÜGG.
VÉGE
MÁS
/* Csomókhoz, például csipkék készítéséhez */
KEZDŐDIK
//
CURR_CHILD_NAME=teljes_árunév;
/* rekurzívan futtatom az eljárásomat */
FOR
SELECT ID_CHILD_JÓ,teljes_árunév
FROM GETFULLNAME(:ID_CHILD_JÓ)
INTO:ID_CHILD_JÓ, :teljes_áru_neve
KEZDJEN EL
/*dodaєmo a vuzla-daddynak az ismerthez. */
full_goods_name=CURR_CHILD_NAME| " " | f ull_goods_name,-
FÜGG. /* fordítsa át az árut*/
VÉGE
VÉGE
VÉGE
VÉGE

Ha ezt az eljárást az ID_GOOD2SHOW=1 bemeneti paraméterrel használjuk, akkor a következőket vesszük:

Mint egy bachit, egy elmentett rekurzív eljárás segítségével átnéztük a kategóriák egész fáját, és a kategóriák – „levelek” – neveit kívül adtuk hozzá, mintha magukon a levelek hegyén találták volna őket.

Visnovok

Ezen a ponton befejezzük az eljárásaim elmentett főbb lehetőségeinek áttekintését. Nyilvánvalóan annak érdekében, hogy elsajátítsuk azon eljárások lebontását, amelyek egy osztás leolvasása során nem menthetők el, megpróbáltuk feltárni és elmagyarázni a mentési eljárásokkal kapcsolatos főbb fogalmakat. A legtöbb adatbázisban megtalálhatók a HP kialakításának és kialakításának leírásai
A megtakarított eljárások költségeihez kapcsolódó fontos élelmiszerek egy része a következő részben – „Az InterBase eljárások mentésének lehetőségének bővítése” – derül ki, mivel ez összefüggésbe hozható az általános hibáztatással, a kegyelmi helyzetek vir_shennu-jával. eljárások, amelyeket a robotok mentenek el.

A ciklus elején a világ azt vizsgálta, hogyan lehet a táblából adatokat levonni, módosítani a struktúráját, létrehozni, módosítani és látni a bennük rejtett adatbázisokat és objektumokat. Ebben a cikkben többet fogunk beszélni a kiszolgálói DBMS-re jellemző objektumokról: az értesítésekről, triggerekről és a mentett eljárásokról.

Ennek a ciklusnak az első cikkében, amelyet folyóiratunk 3'2000. számában közöltünk, jeleztük, hogy a jelenlegi szerver DBMS-ek többsége támogatja a mentett értesítéseket, triggereket és eljárásokat. A megjelenést a bugatma DBMS is támogatja, például Access, dBase, Clipper.

Adja meg, hogy a mentett triggereket és eljárásokat programozási nyelven kell megírni, amelyek az SQL nyelv eljárási kiterjesztései. A kibővített utasítások lehetővé teszik az algoritmusok leírását, például a do…míg, if…then…else, magában az SQL nyelvben használják. На відміну від мови SQL, що підпорядковується стандарту, його процедурні розширення ніяк не стандартизовані, і різні СУБД використовують різні синтаксичні конструкції для реалізації тих самих алгоритмічних конструкцій, але обговорення відмінностей у синтаксисі розширень SQL для різних СУБД виходить за рамки цієї статті.

Annak szemléltetésére, hogyan lehetséges a mentett megjelenés, triggerek és eljárások csavarása, a Microsoft SQL Server 7.0-t és a NorthWind adatbázist választottuk, amely a DBMS szállítási készlete előtt szerepel.

Mindenekelőtt a DBMS-ben győztes triggereket és eljárásokat implementálók és eljárások alkalmazása, tiszteletben tartása tekinthető ezekre a statisztikákra mutatónak. Ezen kívül a szerver objektumok létrehozásához a következő anyák engedélyezettek, mintha az adatbázis adminisztrátora lenne megadva.

Az is lényeges, hogy egyes ODBC-illesztőprogramok nem támogatják az eljárások ciklusát, amelyek a kliens kiegészítésekből kerülnek mentésre, de magát a DBMS-t így támogatják. Ugyanígy védekezzen az elmentett eljárások, a lehető legkorábban, kiküszöbölhetők a triggerekből.

Nézzük meg a tényeket, majd beszéljük meg a mentett eljárásokat, és fejezzük be a triggerek megtekintésével.

Megjelenés

Beküldés - tse virtuális tábla, csengesse ki a táblázatok egyikének oszlopainak számát. Valódi adatot nem kell megtorolni, csak egy SELECT típusú SQL lekérdezést, amely ugyanazokat az adatokat mutatja, és mely táblákból kell átvenni az első reprezentációhoz való visszatéréskor. Z tsієї pont zoru yavlennya - tse ask, scho zberіgaєtsya.

A legtöbb vipadkiv az adatok biztonsága érdekében győzelmet aratott. Például a coristuvachiv kategóriájú diakónusok megjelenésük előtt elérhetők, de táblázatban nem, adatokat képezhetnek; Ezenkívül az SQL lekérdezés beállíthatja a USER paramétert (név, amely alatt regisztrált koristuvach), és ebben az esetben a dátumhoz való visszatéréskor rendelkezésre álló adatok a koristuvach neve alá esnek.

Az alábbiakban bemutatjuk a megnyilvánulás fő jellemzőit:

  • yavlennya úgy viselkedik, mint egy asztal;
  • megnyilvánult, hogy nem áll bosszút az adatokért;
  • A beküldött anyagok több adatot nyerhetnek ugyanabból a táblázatból.

Megjelenések létrehozásához módosíthatjuk a CREATE VIEW SQL javaslatot, módosíthatjuk az ALTER VIEW javaslattal, és törölhetjük a DROP VIEW javaslattal.

Nézzük a CREATE VIEW utasítást, amely lehetővé teszi egy nézet létrehozását egy streaming adatbázishoz.

NÉZET LÉTREHOZÁSA javaslat

Az utasítás létrehozására vonatkozó javaslat szintaxisa kitalálja az SQL SELECT javaslatot számos további kulcsszóval. Az alábbiakban egy egyszerű szintaxis látható:

NÉZET LÉTREHOZÁSA nézet_név AS select_utasításként

A view_name argumentum a nézet nevét adja meg. A kulcsszó, amely a Microsoft SQL Serverben megegyezik, lehetővé teszi a CREATE VIEW javaslat eredeti szövegének csatolását a rendszermegjegyzések táblához.

Az AS kulcsszó azt jelzi, hogy melyik SELECT lekérdezés ténylegesen alkalmazható, amikor az iktatás előtt visszatér. Figyelem, a kérés nem helyettesítheti az ORDER BY, COMPUTE vagy COMPUTE BY, INTO kulcsszavakat, és nem hivatkozhat az időtáblázatra.

A korábban létrehozott állítás módosításához kövesse az ALTER VIEW javaslatot a támadó részben leírtak szerint.

DROP VIEW javaslat

Tsya javaslat vikoristovuєtsya for vydalannya vyavlennya z da nih. Ha látja a táblázatokat az adatbázisból, láthatja az összes rá vonatkozó állítást. Vikoristovuyuchi tsyu javaslatot, vétkesek vagyunk, ha azt mondjuk, im'ya vyavlennya, scho láttam. Megtekintés után az újról minden információ megjelenik a rendszertáblázatokból.

Még egy dolog, ha látnod kell, az elmédre háríthatod, hogy a jelenség létrejötte után megváltozott a táblázatok szerkezete, amelyen alapul. Ebben a nézetben láthatja a vistavát, majd újra létrehozhatja a további NÉZET LÉTREHOZÁSA javaslathoz.

Teremtés és vikoristannya megnyilvánulása

A NÉZET LÉTREHOZÁSA javaslattal olyan utasítást hozhatunk létre, amely lehetővé teszi az adatok megváltoztatását, mintha azokat az énekeseknek adnák át. A beküldött anyagok az aktuális adatbázisban jönnek létre, és objektumként gyűjtik össze.

A megjelenés létrehozásának legjobb módja egy SELECT lekérdezés létrehozása, és annak félreértelmezése után hozzáadja a CREATE VIEW javaslat hiányzó részét. Vessünk egy pillantást a Products by Category deklaráció kimeneti szövegére a NorthWind adatbázisban (1. lista).

Az első sor, a visions vastagon szedve, az, amely bevezeti az SQL-javaslatot a SELECT utasítás létrehozásához, amely a robotot nyeri meg az adatok kiválasztásában. Az adatokra alkalmazandó SELECT záradék két tábla mezőit választja ki – a CategoryName mezőt a KATEGÓRIÁK táblából és a ProductName, QuantityPerUnit, UnitsInStock, UnitsInStock, Discontinued mezőket a PRODUCTS táblából. Ezen adatok után a CategoryID mező összekapcsolja a két táblát, és csak a készleten lévő termékek (a WHERE kulcsszó utáni felosztási kritérium) szerepelnek a kapott adathalmazban. Az első beadványhoz való visszatérés eredménye az ábrán látható. egy .

Most pedig tegyünk egy nyilatkozatot, mintha egy hasonló régió összes területét mutatnánk be. A prezentáció célja a támadásból való kilábalás (2. lista).

Miután elrontotta a tényt, hogy a SELECT propozíció szükség szerint forgatja az eredményeket, hozzáadjuk a CREATE VIEW utasítást, és hozzáadjuk a létrehozott EASTTERR nevet (3. lista).

A kézzel beküldött szöveg létrehozása helyett vizuális eszközökkel léphet be a DBMS-raktárba. ábrán A 2. ábra azt mutatja be, hogyan hozható létre ugyanaz az alkalmazás a kiegészítő View Designer eszköz mögött, amely az Enterprise Manager raktári része, és megelőzi a Microsoft SQL Servert.

A Nézettervező felső része lehetővé teszi a táblák kötésének módját és az adatokban megjelenített mezők megadását. Az alábbiakban pszeudonim táblázatokat és mezőket adhat meg, értékeinek helyettesítését, megjelenítési módját. Dalі tette az értesítés végleges szövegét és a yogo vikonannya eredményeit.

Először is hadd fejezzem be egy rövid körültekintést, beszélünk egy kicsit ezekről, hogyan szerezzünk további információkat róluk. A Microsoft SQL Server 7.0-ban a következő mentett rendszereljárásokat tudjuk módosítani:

  • A bejelentésekkel kapcsolatos információk lekéréséhez használhatja az sp_help rendszereljárást. Például: sp_help EastTerr, hogy megfordítsa a helyzetet az incidenssel kapcsolatban;
  • a beviteli szöveg szerkesztéséhez módosíthatja az sp_helptext eljárást, amely elmentésre kerül;
  • a reprezentáció tárolására szolgáló táblák listájának megismeréséhez használhatja az sp_depends rendszereljárást;
  • egy utasítás átnevezéséhez módosíthatja az sp_rename rendszereljárást, amely elmentésre kerül.

Megvizsgáltuk, hogy kit osztunk meg, hogyan nyerjük el a bizonyítékokat az adatok eltávolításához, hogyan teljesítsük ezeket és más kritériumokat. Térjünk rá a fenék többi részére. A NorthWind adatbázisban több régió található, és a kiválasztott régiók területlistájának kiválasztásához több különböző deklarációra van szükségünk. A feladat megbocsátható, yakbee átadhatta volna a RegionID értéket paraméterként. Lehetőség van további eljárásokra dolgozni, mire kell ügyelni, amiről a támadóosztálynál fogunk beszélni.

Mentési eljárások

A mentett eljárás az SQL-propozíciók halmazának összeállítása, a mentések az adatbázisban objektum elnevezésként és az összefűzés egyetlen kódrészletként. A mentési eljárások paramétereket fogadhatnak és forgathatnak. Ha létrehozunk egy elmentett eljárást, akkor a szerver lefordítja azt, és a gyorsítótárba helyezi, amely szétosztásra kerül, majd a fordítási kód matricákkal blokkolható. Ha a program veri a mentendő eljárást, szükség szerint átadja a paramétereket, és a szerver újrafordítás nélkül nyeri az eljárást.

A mentési eljárások lehetővé teszik a programok termelékenységének növelését. Először is, porіvnjano іz méretes SQL-kérések, melyeket lenyomnak a kliensprogramok, a bűz kevesebb mint egy órát vesz igénybe a felkészülés a vége előtt, a bűz bűzei már össze vannak fordítva és elmentve. Másrészt a kisebb forgalom is kisebb időnként, kevesebb az SQL-lekérdezés átvitelekor, kevesebb adatot továbbítanak a linkekben. Rizs. 3 szemléltető heti eljárás, melyet az ügyfél melléklete vesz át.

A mentési eljárások automatikusan újrafordításra kerülnek, mintha tárgyakkal, bűzt öntenek beléjük, zrobleno be-yaki változás; іnakshe kazhuchi, büdös zavzhdi aktuális. Amint már fentebb említettük, a mentett eljárások elfogadhatnak olyan paramétereket, amelyek lehetővé teszik, hogy különböző kiegészítők nyerjék ugyanazt az eljárást, és különböző bemeneti adatkészleteket zastosovayuchi.

Mentési eljárásokra van szükség az adatok integritásának és az üzleti szabályok végrehajtásának támogatása érdekében. Időnként dodatkova rugalmasság, szilánkok állnak rendelkezésre, az üzleti szabályok változásával az eljárás szövegét módosíthatja anélkül, hogy az ügyfél-kiegészítéseket megváltoztatná.

Eljárások létrehozásához, módosításához és módosításához használjon speciális SQL-javaslatokat - CREATE PROCEDURE, ALTER PROCEDURE és DROP PROCEDURE. A támadóosztálynál nézzük őket.

Javaslat ELJÁRÁS LÉTREHOZÁSA

A CREATE PROCEDURE záradékot választja a mentendő eljárás létrehozásához. Lehetséges sértő elemzési szintaxis:

CREATE PROC proc_name [(@parameter data_type) [= alapértelmezett] ] [...] AS sql_statements

A proc_name argumentum beállítja az eljárás nevét, amely elmenthető, ha egyedi lehet a száladatbázison belül. A @parameter argumentum egy eljárásparamétert ad meg. A CREATE PROCEDURE záradék egy vagy több paraméterrel rendelkezhet. Bár a paraméternek nincs értéke az előléptetéseknél, előfordulhat, hogy egy levelező (vagy egy ügyfél kiegészítése) utal át egy heti eljárás órájában. A Microsoft SQL Server 7.0 verziójában a bevett eljárásparaméterek száma nem felelős az 1024 felülbírálásáért; mert umovchannyam bűz mozhut anya znachennya NULL.

Lényeges, hogy az adatokhoz való hozzáférés univerzális mechanizmusai további korlátozásokat írhatnak elő a mentett eljárásparaméterek számára. Például az Oracle 8 BDE illesztőprogramja csak olyan eljárásokkal működik, amelyek paramétereinek száma nem változik 10-re.

A data_type argumentum adja meg a paraméter adattípusát. Az alapértelmezett kulcsszó egy promóció mögötti érték beállítására használható – ez lehet állandó vagy NULL. Ha egy zároláshoz értéket adunk meg, az eljárás elhagyható a paraméter értéke nélkül. Hasonlóképpen, az eljárás egy paramétert használ a LIKE kulcsszóval, a promóció értéke helyettesíthető csoport karakterekkel (%, _ és [^]).

Az OUTPUT kulcsszó jelzi, hogy melyik paramétert kell elforgatni.

Az AS kulcsszó azt jelzi, hogy az eljárás a hibás azért, mert ellentmond a kiszolgálóra jellemző SQL-propozíciók és az SQL-eljárási kiterjesztésben található javaslatok számának megtekintése között.

A további CREATE PROCEDURE záradékhoz létrehozott eljárás mentésre kerül a streaming adatbázisból. A Microsoft SQL Server rendszerben az eljárások nevei a sysobjects rendszertáblába, a kimeneti szöveg pedig a syscomments táblába kerülnek.

A korábban tett módosításához a következő eljárást választottuk az ELJÁRÁS MÓDOSÍTÁSA javaslat megnyeréséhez, amelyet a következő részben röviden ismertetünk.

Javaslat ELJÁRÁS

Tsya javaslat vikoristovuetsya távoli eljárásokhoz, amelyek az adatbázisból származnak. A DROP PROCEDURE javaslat egyetlen érvet tartalmaz, a látható eljárás nevét.

A mentett eljárások eltávolításakor az azokra vonatkozó információk törlődnek a rendszertáblázatokból, a sysobjects és syscomments.

A mentett kiválasztott eljárások létrehozása

Az eseményekhez rendelt elágazásnál tiszteletet adtunk azoknak, amelyek jól jöhettek volna, így a NorthWind adatbázisban található négy régió valamelyikének kiválasztásához egy paramétert tudtunk átadni a prezentációnak a RegionID érték helyett. Nézzük meg újra, ami a területek listáját a régióra fordítja:

SELECT Territories.TerritoryDescription, Region.RegionDescription FROM Territories INNER JOIN Régió ON Territories.RegionID = Régió.RégióID WHERE Területek.RegionID = 1

Egy másik régió kiválasztásához meg kell gondolnunk a WHERE záradékot a sor többi részében. Továbbá, mivel változtunk (úgynevezett RegID), négy régió közül választhatunk egyet anélkül, hogy a beiratkozás egyéb részeit megváltoztatnánk.

A NorthWind adatbázisnak több régiója van 1-től 4-ig. Ez azt jelenti, hogy a RegID egész típusként módosítható. A végrehajtandó eljárás kódja az alábbiakban látható:

ELJÁRÁS LÉTREHOZÁSA ShowRégió @RegID int AS SELECT Territories.TerritoryDescription, Region.RegionDescription FROM Territories INNER JOIN Régió ON Territories.RegionID = Régió.RegionID WHERE Territories.RegionID = @RegID

Adjon hitelt azoknak, akik esetleg megfosztották a SELECT kérés teljes szövegét, nincs foglalt (dőlt betűs víziók), és csak az újonnan létrehozott mentett eljárás nevéhez (az első sorban) adták hozzá a CREATE PROCEDURE javaslatot, az elavulás paramétert. (a másik sorban) és az AS kulcsszó, a scho vkazuє cob propositions, valóban vykonuyut diї.

A létrehozott SQL Server Query Analyzer eljárás eredménye RegID = 2 leolvasáshoz a 2. ábrán. 3.

Nyilvánvalóan el tudjuk menteni a mentés alatt álló eljárásokat, nem csak a manifesztáció kiterjesztett verzióinak megvalósítására, hanem az "intellektuális" SELECT kérésekre is. A mentési eljárások olyan mechanizmusokat biztosítanak, amelyek lehetővé teszik számos rutinfeladat automatizálását.

A Microsoft SQL Server 7.0-val a rendszermentési eljárásokat is módosíthatjuk, hogy a legfontosabb elmentett eljárásokkal működjenek:

  • sp_stored_procedures – a mentendő eljárások listájának megjelenítése;
  • sp_helptext - a mentendő eljárás szövegének megjelenítése;
  • sp_depends - információkat mutat a mentési eljárások elavultságáról;
  • sp_procooption - opciók beállítása a mentett vagy beállított eljárásokhoz;
  • sp_recompile - az eljárás újrafordítása a következő hét időpontjában;
  • sp_rename – az eljárás nevének módosítása.

Mentett rendszereljárások

Microsoft SQL Serverről beszélünk, de az általa mentett és implementált rendszereljárások nagy számára gondolunk. A mentett rendszereljárások nevei az SP_ vagy XP_ verzióból indulnak, és a fő adatbázisban kerülnek mentésre. Gyakrabban leírtuk már a sokszor győztes rendszerszintű eljárások tetteit, amelyek megmenekülnek.

Mutasd meg tiszteletben, hogy a kiváltó okok nem hibásak a coristuvachev adatok elforgatásában.

A CREATE TRIGGER javaslatnak két speciális táblája lehet. Például a törölt és beszúrt táblák szerkezete megegyezik a táblákéval, trigger van hozzárendelve, és törölheti a módosított rekordok régi és új értékeit. Például megforgathatjuk a következő SQL-javaslatot távoli rekordok kereséséhez:

SELECT * FROM törölve

Az asztalnál A 3. ábra a törölt és a beszúrt táblákat is mutatja az összes lehetséges adatmódosításhoz.

A nyílt trigger megváltoztatásához kövesse az ALTER TRIGGER javaslatot. Beszéljünk valami újdonságról a támadóosztályban.

A csutka esetében két új mezőt kell hozzáadnunk a táblázathoz, amelyekben a számok csökkennek. Nevezetesen: їх UpdatedBy (a rekordot leállító menedzser neve) és UpdatedWhen (az óra, amikor a rekordot megváltoztatták). Hozzuk létre a KeepTrack nevű triggert. jóga tengely kódja:

CREATE TRIGGER KeepTrack ON Customers INSERT, UPDATE AS UPDATE Customers SET Customers.UpdatedBy = USER_NAME(), Customers.UpdatedWhen = GETDATE() FROM beszúrva, Customers WHERE inserted.CustomerID = Customers.CustomerID

Amint az a trigger kimeneti szövegéből látható, a vin ellenőrzésre kerül az INSERT és UPDATE skin műveletek után a Customers táblában. Ez az eseményindító elmenti a kezelő (adatbázis) nevét a Customers.UpdatedBy mezőben, és módosítja a dátumot és az órát a Customers.UpdatedWhen mezőben. Az adatok számai ki vannak zárva az időtáblázatból, bevezetve.

A Bachimohoz hasonlóan ez a trigger lehetővé teszi a változások követését és új rekordok beszúrását a táblázatba.

Előtte, hogyan kell befejezni egy rövid pillantást a triggerekre, mi vétkesek vagyunk a segítségért, így Ön megismerheti a triggerekkel kapcsolatos információkat. A sysobjects tábla az eseményindítókról és típusokról, a syscomments tábla pedig ezek kimeneti szövegét tárolja.

Visnovok

Ebben a részben megvizsgáltunk néhány adatbázis-objektum típust – eljárásokat, észleléseket és elmentett triggereket. Felismertük az előrelépést:

  • Megjelenés - tse virtuális tábla, hang, amely oszlopok részhalmazaként jön létre egy számú táblázatban. Nézet létrehozásához a NÉZET LÉTREHOZÁSA javaslatot használjuk, annak módosításához az ALTER VIEW javaslatot, a törléshez pedig a DROP VIEW javaslatot.
  • A mentett eljárás az SQL-propozíciók halmazának összeállítása, a mentések az adatbázisban objektum elnevezésként és az összefűzés egyetlen kódrészletként. Mentett eljárás létrehozásához az ELJÁRÁS LÉTREHOZÁSA javaslat be van állítva, a módosításhoz - ELJÁRÁS MÓDOSÍTÁSA, illetve törléséhez - ELJÁRÁS DROP PROCEDURE.
  • A trigger egy speciális típusú eljárás, amelyet a rendszer elment, mivel automatikusan meghívódik, ha az egyetlen táblában lévő adatokat hozzáadják, láthatók vagy módosítják a további INSERT, DELETE vagy UPDATE SQL-javaslatokhoz. Triggerek jönnek létre a CREATE TRIGGER záradék segítségével. A trigger módosításához az ALTER TRIGGER javaslatot választja ki, és a DROP TRIGGER javaslatot eltávolítja.

ComputerPress 12"2000

SQL eljárások mentése - programmodul feltörése, amely megmenthető a különböző objektumok megtekintésétől. Más szóval, az objektum, amely az SQL-utasításokat tartalmazza. A mentett eljárások az alkalmazáskliensekben használhatók a jó termelékenység elérése érdekében. Ezen túlmenően, az ilyen objektumokat gyakran más forgatókönyvekből hívják elő, vagy valamilyen másfajta elosztás ösztönzésére.

Belépés

Mindenkinek fontos tudnia, hogy hasonlóak más eljárásokhoz (például MS SQL). Lehet hogy igazad van. Hasonló paraméterekkel rendelkezhetnek, hasonló értékeket láthatnak. Ezek felett egy órán keresztül ragad a bűz. Például a bűzöket a DDL és DML adatbázisokhoz, valamint az alapvető funkciókhoz (kódnév - UDF) társítják.

Valójában a gondozott SQL eljárások sokféle előnyre képesek, hiszen az ilyen folyamatok közepét látják. Bezpeka, a programozás variálhatósága, a termelékenység - mindez hozzátesz a maghoz, amely adatbázisokból, több adatból működik. Az eljárások népszerűségének csúcsa 2005-2010-re esett, ha a program „Microsoft” néven, SQL Server Management Studio néven jelent meg. Az adatbázisok segítségével sokkal egyszerűbb, praktikusabb és kényelmesebb lett. A rock a világon ilyen egyre népszerűbb a programozók körében. Ma már teljesen hangos program, mint a koristuvachiveknek, olyan, mint az adatbázisokkal való „összekapcsolás”, olyan lett, mint az „Exel”.

Ha rákattint az eljárásra, azt maga a szerver azonnal feldolgozza anélkül, hogy zayvih protsessіv, hogy vtruchannya coristuvacha. Ha igen, akkor zdiyasnyuvati lehet-mint egy távoli, vikonannya, változás. Mindehhez szükség van egy DDL-operátorra, amely autodidakta módon képes kirabolni az objektumfeldolgozás legbonyolultabb részeit. Sőt, úgy tűnik, hogy nagyon gyors, és a szerver valójában nem navantazhuetsya. Ez a fajta sebesség és termelékenység lehetővé teszi nagy mennyiségű információ könnyű átvitelét a szerverről a szerverre.

Ennek a technológiának a megvalósításához az információval rendelkező robotok mov programozáson alapulnak. Előttük látható például a PL / SQL, mint az Oracle, a PSQL az InterBase és a Firebird rendszerekben, valamint a klasszikus „Microsoft” Transact-SQL. Minden bűzt felismernek a mentett eljárások létrehozásához és lezárásához, amelyek lehetővé teszik az algoritmusok elsajátítását nagyszerű adatbázisokban. Szükséges, hogy az ilyen információkat kezelők minden objektumot meg tudjanak védeni a harmadik felek rendszereihez való jogosulatlan hozzáféréstől, és természetesen más adatokat létrehozni, módosítani vagy megtekinteni.

Termelékenység

A Qi adatbázis objektumok különböző útvonalakkal programozhatók. A Tse lehetővé teszi a coristuvachas számára, hogy kiválassza a legmegfelelőbb vikorózus módszer típusát, amely megmenti az adott óra erejét. Ezen túlmenően maga az eljárás is feldolgozás alatt áll, ami lehetővé teszi, hogy elrejtse a szerver és a szerver közötti remek óránkénti árfolyamokat. Ezenkívül a modul bármikor újraprogramozható és megváltoztatható. Különösen fontos megjegyezni azt a rugalmasságot, amelyhez az elmentett SQL eljárás elindítása várható: ez a folyamat jobban hasonlít másokhoz, hasonló ahhoz, hogy hatékony és univerzális legyen.

Bezpeka

Az ilyen típusú információfeldolgozást hasonló folyamatokban használják, ami nagyobb biztonságot garantál. Tse bezpechuetsya annak a ténynek a számlájára, hogy mások hozzáférése az eljárásokhoz újra kikapcsolható. Tse, hogy az adminisztrátor önállóan végezhessen velük műveleteket, ne féljen a perehoplennya információktól vagy az adatbázishoz való jogosulatlan hozzáféréstől.

Adatátvitel

A felvett SQL eljárás és a kliens kiegészítése közötti kapcsolat különböző paramétereken és értékeken alapul, amelyeket elforgatnak. Ne obov'yazkovo adatokat vigyünk át az eljárásba, amelyet elmentünk, az információkat feldolgozzuk (főleg igény szerint) és feldolgozzuk az SQL-hez. Mivel az elmentett procedúra befejezte a munkáját, a melléklethez visszakerültek az adatcsomagok (ale, tudom, a hibákért), hogy tudjátok használni a jógát, győztes módszereket, aminek a segítségére megtalálhatjátok. nézze meg, hogyan kell menteni az SQL eljárást, és fordítsa el például:

Adatok átadása egy további paraméterhez az Output típushoz;

Adatátvitel a kezelő segítségére;

A tisztelgés erőssége a kezelő segítségéért a választásban.

És most vessünk egy pillantást, mintha az egész folyamatot néznénk a közepén.

1. EXEC mentett eljárás létrehozása SQL-ben

Eljárást létrehozhat az MS SQL-ben (Managment Studio). Az eljárás elkészítése után a programozási vuzol alapadatokból újrarendeződik, melyben az eljárást az operátor hozza létre. A vykonannya SQL eljáráshoz scho zberіgayutsya, vykoristovuyut EXEC-folyamat, kaki m_sti іm'ya magának az objektumnak.

Az eljárás kombinálásakor először a név deklarálódik, majd kiválasztásra kerül egy vagy több Önhöz rendelt paraméter. A paraméterek lehetnek nem kötelezőek. Mivel az eljárás törzséhez tartozó paraméter(ek) meg lesz írva, ezért el kell végezni a szükséges műveleteket.

Jobb oldalon abban, hogy a karosszéria helyben cserélhető, roztashovani in nіy, és tsі helyben is cserélhető a beavatkozások előtti dátum szerint is. Más szóval, ezek csak a Microsoft SQL Server eljárás törzsének közepén láthatók. A mentési eljárások időnként vvazhayutsya helyiek.

Így egy eljárás létrehozásához szükségünk van az eljárás nevére és legalább egy paraméterre az eljárás törzsében. Fogadja el a tiszteletet, hogy ilyen időre a legfontosabb lehetőség a séma nevére vonatkozó eljárás létrehozása az osztályozónál.

Az eljárás törzse lehet valamilyen példa, például táblák létrehozása, egy vagy sor sor beszúrása a táblázatokba, az adatbázis típusa és jellege stb. Az eljárás proteotestje a jelenlegi műveletek győzelmei között van az újban. A fontos elhatárolási aktusok az alábbiakban készültek:

A test nem vétkes abban, hogy bármilyen más eljárást végrehajt, amelyet megmentenek;

A test megbocsáthat a tárgyról;

A test nem hibás a mindennapi kiváltó okok létrehozásában.

2. Változás telepítése az eljárás törzsébe

Ezeket helyileg módosíthatja az eljárás testének megfelelően, és a szagok csak az eljárás testének közepén változnak. A jó gyakorlat olyan eljárások létrehozása, amelyeket a test csutkáján változtatnak meg, és amelyeket elmentenek. De az is lehetséges, hogy egy adott objektum testében tetszőleges helyre változtatásokat telepítsünk.

Bizonyos esetekben észrevehető, hogy néhány változtatás egy sorban van telepítve, és a változási paraméter skinje vízzel megerősített. Kérjük, vegye figyelembe, hogy a @ előtagot megváltoztathatja. Bárhol módosíthatja az eljárás típusát. Például a @NAME1 módosítása az eljárás végéhez közeledve hangozható el. A hangtalan változás jelentésének megadása érdekében speciális adathalmazt gyűjtünk össze. A helyzet alapján, ha egy sorban egynél több változás hangzik el, akkor egy ilyen helyzetben egynél kevesebb speciális adat van.

A kvízek gyakran felteszik a kérdést: "Hogyan lehet felismerni egy kis értéket az eljárás címében szereplő egyetlen utasításban?" Jól. Etetni a kabát, de könnyebb gazdagabbá tenni, nem gondolod. Tipp: az ilyen párok segítségére, például "Select Var = érték". Legyőzheti az esélyeket, ha kómával szétosztja őket.

A legmanipulatívabb csikkekben az emberek egy egyszerű eljárás létrehozását mutatják meg, mire vigyáznak, és vikonannya її. Ehhez az eljáráshoz olyan paramétereket vehet fel, mint a folyamat, amit hív, és az érték közel van az újhoz (de ne változtasson rajta). Ahogy a bűz kiszökik, majd a test közepén beindulnak a folyamatok. Például, hogyan lehet eljárást létrehozni, hogyan lehet elfogadni az előfizetőtől a régió helyét, mit kell hívni, és ezekről megforgatni az adatokat, hány szerzőt küldenek az adott régió helyére. Az eljárás figyelembe veszi az adatbázis szerzőinek táblázatait, például a Pubokat a szerzők listájának végéig. Például, hogy megnézzük az adatbázist, a Google rögzíti az SQL-szkriptet az SQL2005 oldaláról.

Az elülső esetben az eljárás két paramétert vesz igénybe, amelyek angolul @State és @City nevet kapnak. Az adatok típusa összhangban van a kiegészítéshez rendelt típussal. Az eljárás címét a @TotalAuthors (minden szerzőről) belsőleg módosíthatja, és a mennyiségük megjelenítése érdekében módosítja. Dalі z'yavlyaєtsya razdіl vyboru zaputu, yakii all pіdrakhovuє. Nareshti, podrahovane znachennya vіdobrazhaєєtsya vіknі vyvodu a kezelő segítségéért egy barátjának.

Hogyan menthetem el az eljárást az SQL Viconati segítségével

Az eljárás követésének két módja van. Megjelenik az első elérési út, átadva a paramétereket, mivel az eljárás neve után megjelenik a felosztások listája. Megengedett, két jelentéssel rendelkezhetünk (mint az elülső fenéknél). Az értékeket a @State és @City eljárások további változó paramétereihez veszik. Akinek a paraméterek átvitelének egész módja fontos sorrendben van. Ezt a módszert ordinális argumentum átadásnak nevezzük. Ellenkező esetben a paraméterek egyértelműen felismerhetők, és így a sorrend nem fontos. Ennek másik módja a megnevezett argumentumok átadása.

Az eljárás szabvány szerint módosítható. Így megy, mint az elülső fenékben, de csak itt jelennek meg a paraméterek. Tehát először a @City paraméter, a zárolási értékekből pedig a @State. A zár mögötti paraméter úgy hangzik, mintha minden rendben lenne. A mentett SQL eljárások egyszerű paraméterekként kerülnek átadásra. Ebben az esetben vegye figyelembe, hogy az UT paraméter felülírja az SA zárolás értékét. A másik vicon több argumentumértékkel rendelkezik a @ City paraméterhez, a @ State paraméter pedig a CA kulcs értékét veszi fel. A programfrissítések örülni fognak, így a rövidítések változásai a paraméterlista végéhez közeledve frissülnek. Más módon nem tudjuk megcsinálni, és még te is hibáztatod az elnevezési érvek átvitelét, ami jobb és összehajthatóbb.

4. Mentse az SQL Server-eljárásokat: Forgatás módjai

Három fontos módja van a mentett kizárási eljárások adatainak kezelésének. A bűzt az alábbiakban rehabilitálják:

Az elvégzett eljárás értékének elforgatása;

A mentés alatt álló eljárások paraméterének kizárása;

Válasszon egyet a mentett eljárások közül.

4.1 Az SQL-eljárások mentésének értékének megváltoztatása

Ennél a módszernél az eljárás megadja a lokális változás értékét és elforgatja azt. Az eljárás késedelem nélkül megfordítható. A támadó fenéknél olyan eljárást hoztak létre, mintha nagyszámú szerzőt forgattak volna meg. Ha összehasonlítja ezt az eljárást az előzőekkel, akkor azt gondolhatja, hogy a másik jelentését a visszatérési érték váltja fel.

Most nézzük meg, hogyan kell követni az eljárást és beírni a jelentést, hogyan kell megfordulni. Vikonannya eljárás vmagaє vstanovlennya zminnoї, hogy barátom, jak kell végezni a folyamat után. Vegye figyelembe, hogy helyettesítheti a Select operátort, például a Select @RetValue, valamint az OutputValue értéket.

4.2 SQL eljárás paraméter törlése elmentendő

A jelentése a vіdpovіd lehet vikoristane fordult egy zminnoy, amit mi és bachiled az első popsi. Az Output paraméter változata lehetővé teszi, hogy az eljárás egyik vagy másik oldal változásának értékét korrigálja a másik oldalon. A kimeneti paramétert az eljárás létrehozásakor ugyanaz a kulcsszó jelöli, mint az "Output". Ha egy job paraméter kimeneti paraméter, akkor az eljárásobjektum felelős az értékének beállításáért. A lejjebb használható mentési SQL-eljárásokat különböző esetekben alkalmazzák a sub-bag információkkal.

Alkalmazásunknak két hivatalos neve lesz: @ TotalAuthors és @ TotalNoContract. A bűzt a paraméterlista jelzi. Qi zminnі jelentését adják a közepén a test az eljárás. Ha megnyerjük a paramétereket, az előfizető kiválaszthatja az eljárás törzsének közepébe beszúrt értéket.

Ezenkívül az előző forgatókönyvben két változtatás történik az érték növelése érdekében, mintha az MS SQL Server eljárást mentenék a kimeneti paraméterbe. Ezután az eljárást a CA paraméter normálértékének beállítási útja veri. A következő paraméterek ugyanazok, és később a hangtalan változtatások sorrendben kerülnek továbbításra. Fogadd el a tiszteletet, hogy a megváltozott napok múlásának órája a kulcsszó itt is megadatott. A sikeres eljárás után a további egyeztetés érdekében megjelenik a jelentősége, mivel az utolsó paraméterek további segítségért fordulnak.

4.3 Válasszon egyet a menteni kívánt SQL-eljárások közül

Ezzel a technikával az adattáblázatokban lévő értékkészletet (RecordSet) a teljes folyamatra forgatják. Ennél az alkalmazásnál a mentés alatt álló SQL eljárás az @AuthID paraméterekkel a "Szerzők" táblát szűrőútvonallal látja el, a rekordok a további @AuthId paraméter után forognak. A Select utasítás felülírja, hogy mit lehet forgatni, és meghívja a kiválasztáshoz szükséges eljárásokat. Ha az eljárás sikertelen, az AuthId visszaküldésre kerül. Egy ilyen eljárás itt mindig csak egy rekordot forgat, különben szükséges. Ale, a folyamatban lévő eljárás nem forgathat több rekordot naponta. Sokszor lehet példát is alkalmazni, a különböző paraméterű adatforgatások egy részéhez a változás számításának közreműködésével lehetőség van többféle zsák érték megadására.

A végén

A mentés alatt álló procedúra egy komoly szoftvermodullal való kiegészítés, amit forgat, illetve továbbít, és a szükséges változtatásokat is telepíti a kliens mellékletbe. Oskіlki eljárás, amely mentve, vikonuєtsya a szerveren magát, az adatcsere a nagy kötelezettségek között a szerver és a kliens kiegészítése (azokra a levonható) lehet törölni. Ez lehetővé teszi az SQL-kiszolgálóra való visszaminősítést, amely nyilvánvalóan az uralkodók kezébe kerül. Az egyik előre látható a T SQL eljárások, amelyekről azok gondoskodnak, akik jelentős adatbázisok létrehozásában vesznek részt. Szintén nagyszerű, hogy sok árnyalatot inspiráljunk, amelyek eltérőek lehetnek az elmentett eljárások végrehajtása során, inkább azoknak van szükségük, akik tervezik, hogy programozással foglalkozzanak, így szakmailag is.