A tárolt függvények-SQL

Az SQL Server segítségével létrehozhatunk saját funkciók hozzáadása és kiterjeszti a funkcionalitást a rendszer által biztosított. Funkciók kaphat 0 vagy több paraméter és visszaút skalár érték, vagy egy asztal. A bemeneti paraméterek lehetnek bármilyen típusú, kivéve az időbélyeg, kurzor, asztal.

SQL Server támogatja háromféle felhasználó által definiált függvények:

1. Hozzon létre egy tárolt

Egy függvény, amely visszaadja egy tábla:

2. A skalár függvények-SQL

Tehát először a létrehozását a kódot a skalár függvény:

Ezután adja meg a kulcsszót visszatér, majd egy leírást, hogy milyen típusú a visszatérési érték. Egy skalár függvény e ?? ez lehet bármilyen típusú (karakterláncok, számok, dátumok, stb.)

Között a kulcsszavakat BEGIN és az END a következő kód:

Az első sor kijelenti változó @Summ. Meg kell tárolni a közbenső eredmény a számításokat. Következő SELECT lekérdezés lefut, amelyben a keresett szöveget dátum és a termék nevét a táblázatban a termékek. Az illeszkedő szöveget szorzatát területén árak és összegek, és az eredmény változóban tároljuk @Summ.

Felhívjuk figyelmét, hogy a végén a kérés jele a pontosvessző. Az egyes kérelmek véget tim e ?? egy szimbólum, de a legtöbb esetben mi ?? e tim elhanyagolt, de függvényében hiányában a „;” Ez okozhatja a hibát.

Az utolsó sor visszaadja az eredményt. Mert e ?? érdekében, hogy írjon a kulcsszó RETURN, ami után egy írásos visszatérési érték vagy változó. Ebben az esetben a visszatérés lesz a változó tartalmát @Summ.

Mivel skalár függvény, akkor a visszatérési érték kell, hogy legyen egy skalár és e ??, amelyek megfelelnek a leírt típusú a kulcsszó után visszatér.

3. A függvények

Hogyan kell elvégezni ezt a funkciót? Igen, valamint számos más rendszer funkcióit (például getdate ()). e ?? Például, a következő példa egy funkciót a kezelő SELECT:

Végre a következő lekérdezést, hogy megbizonyosodjon arról, hogy visszatért ugyanazt az eredményt, mint mi létrehozott függvényt:

Akkor használja ezt a funkciót, nem csak a SELECT, hanem közvetlenül egy értéket rendelünk egy változóhoz. e ?? Például:

Az e ??, hogy például, deklaráltuk egy változó @Summ típusú numerikus (10,2). Ez az a fajta funkció visszatér. A következő sorban van rendelve a változó eredményét Summ keresztül SET.

Lássuk, mi történik, ha az átruházás az ilyen paraméterek függvényében, ahol a kérelmet a függvény egynél több sorban. Asztalunknál áruk kombinációja dátumot és a nevet nem ad különleges, mert már eltört. Az elsődleges kulcs az asztalra, és nem, és áruk között van négy sor, amelyek azok másolatai. e megsérti a szabályt egyedi sorait relációs adatbázisok, de nagyon világosan mutatja, hogy a valós életben nem tud törni.

e PerforMAN csak egy szám, míg a két vonal. e ?? amely vonal két felújított szerver? e ?? Senki nem tudja biztosan megmondani, hogy, mert mind az azonos, és anélkül különbségeket. Poe ?? a szerver valószínűleg visszatért az első a sorban.

4. A függvény, amely visszaadja egy tábla

Az alábbi példában létrehozunk egy függvényt, amely visszatér eredményeként az asztalra. Példaként hozzunk létre egy függvényt, amely visszatér egy táblázatot az áruk, és minden sorban számítani a termék az oszlopok száma és az árak:

e ?? achalo funkció ugyanaz, mint a skalár - jelzik a CREATE FUNCTION utasítással és a függvény neve. Azt speciálisan létrehozott e ?? függvény paraméterek nélkül, így láthatja, hogyan csinálja ?? e. e ?? e nézi, milyen lehetőségek vannak, a név után zárójelben kell menni, ami nem kell írni semmit. Ha kihagyja a zárójelben, a kiszolgáló hibát, és a funkció nem lesz létrehozva.

e különbség létezik a hozamok részén, majd a típus TABLE utasítás, amely beszél annak szükségességét, hogy visszatérjen az asztalra. Miután e ?? ez a kulcsszó AS és a visszatérés, ami után kell jönnie a visszatérési érték. A funkció az ilyen típusú a visszatérési szakasz szükséges zárójelben a kérelmet, melynek eredménye egy függvényt visszaad.

Amikor az írási, mind a mezők nevét tartalmazzák. Ha az egyik mező nincs neve, az eredmény a CREATE FUNCTION állítás téves. Ebben a példában az utolsó mező a szorzata területén „Ár” és a „mennyiség”, és ezek a mezők nem elemzi, POE ??, amit kérünk a kulcsszó AS.

Lássuk, hogyan lehet használni ezt a funkciót a SELECT:

Amióta használjuk a SELECT egyszerű, és akkor a kimenet korlátozása bizonyos vonalak korlátozások a WHERE záradékot. e ?? Például az alábbi példában a függvény eredménye válassza csak azokat a vonalakat, ahol a „szám” értéket tartalmaz, 1:

A függvény egy táblázatot, hogy tudod használni, mint bármely más adatbázis tábla. Hozzunk létre egy példát, amelyben láthatjuk a funkciók használatának kapcsán a táblázatokat. Először hozzon létre egy függvényt, amely visszaadja az azonosító az asztal tbPeoples alkalmazottak és összevonható egy mező neve:

e Vegyünk egy példát, GetPeoples működni fogunk vissza az összes sort a táblázatba. Ahhoz, hogy csak a megfelelő nevet, meg kell írni egy lekérdezést, mint például:

Az e ?? ha két lekérdezés végrehajtásra kerül: e ?? egyik és a másik a funkciót. ?? e az átutalás, ha az utolsó név, mint a paraméter függvényében, és ott nem WHERE záradékot, akkor tegye lekérdezés SELECT:

5. A Többutasításos függvény egy asztal

Minden funkció létre 3.3.5 részben visszatérhet egy asztal generált egyetlen SQL utasítást. e ?? Hogyan, akkor ahhoz, hogy a képesség, hogy végre több műveletet? e ?? Például érdemes elvégzéséhez további érvényesítése bemeneti paraméterek a biztonság érdekében. Ellenőrzések nem felesleges, különösen bemenet, és különösen akkor, ha az e ?? ty a felhasználó által bevitt.

A következő példa bemutatja, hogyan lehet létrehozni egy függvényt, amely visszatér az eredményt, mint egy asztal, és amikor e ??, hogy a test funkcióit lehet végezni több szereplők:

Itt van egy különbség a skalárfüggvények - RETURN miután rámutatott a változó nevét, amelynek értékét kell az eredményt. Ebben az esetben, akkor nem kell megadni. Már bejelentett egy változó RETURNS részt, és írja le a méret ?? e a változó. A test a funkciót, akkor lehet és kell kitölteni e ?? változó nevét és értékek ?? e ez lesz benne.

Most nézzük meg egy konkrét példát: létrehozunk egy funkciót:

Ebben a példában, mivel az eredmény változó deklarált @ret, ami egy táblázatot a két terület „idPeoples” int és a „vcFIO” hosszú varchar típusú 50 karakter. A test a funkciót a e ?? táblázatban rögzített értékek tbPeoples táblázatot, és végrehajtja a nyilatkozat RETURN, megszüntetéséről funkciót.

A használat során, egy ilyen funkció ugyanaz, mint a korábban tárgyalt. e ?? Például az alábbi lekérdezés kiválasztja az összes adat, hogy a függvény visszatér:

6. Options funkciók

Létrehozásakor funkciók SCHEMABINDING következő lehetőségek használhatók (kötődni a rendszer), és / vagy a titkosítási (rejtjelezett funkció). Ha a második lehetőséget már tudjuk az orsó és eljárások (a funkció lehetővé teszi, hogy titkosítja a forráskódot a rendszer táblák), az utóbbi megtalálható az első alkalommal, de uh ?? hogy kényelmes lehetőséget biztosít adatvédelmet.

Ha ezt a funkciót arra tervezték, hogy SCHEMABINDING opciót, az adatbázis-objektumok által hivatkozott függvény nem lehet megváltoztatni (a ALTER nyilatkozat) vagy eltávolított (egy csepp kimutatás). e ?? Például az alábbi függvény tbPeoples táblázatkezelő és e ?? használják SCHEMABINDING lehetőség:

A funkció társítható a rendszer csak akkor, ha a következő korlátozás az igazság:

Hozzon létre egy függvényt, majd próbálja után ?? e törölni egy asztal tbPeoples.

Válaszul az e ?? akkor a kiszolgáló egy hibaüzenet jelenik meg, hogy a tárgy nem lehet eltávolítani jelenléte miatt az idegen kulcs. Még ha megszabadulni a kulcs eltávolítása nem lesz lehetséges, mert a táblázatban utal, hogy a funkció van kötve a rendszerből.

Az üzenet megtekintéséhez eltávolítása nélkül a kulcsot adjunk egy oszlopot a táblázatban, majd próbálja meg eltávolítani:

Létrehozása sikeres volt, de az eltávolítása egy hiba, egy üzenetet, hogy van egy határ, attól függ, hogy az oszlopon. Mi nem állapít meg korlátozásokat, és egyszerűen hozzá egy oszlopot, és megpróbálta eltávolítani. Korlátozások már régóta létezik, de nem egy külön oszlopban, az összes asztal és oszlopok e ?? restrikciós létrehozott függvényt GetPeoples2, amely kapcsolatban van az áramkört.

7. módosítása funkciók

Meg lehet változtatni a funkció használatával a kezelő ALTER FUNCTION. Az általános formája minden változatra különböző funkciókat. Nézzük meg mindegyik.

1. Általános nézet a csapat változik skalár függvény:

2. Általános nézet a változó függvény, amely visszaadja egy tábla:

3. Általános nézet a csapat egy csomó függvényében változik nyilatkozat arról, hogy visszatér egy asztalhoz.

A következő példában egy egyszerűsített változata a parancsot, hogy módosítja a funkció:

8. A távoli funkció

Kapcsolódó cikkek