Felhasználó által definiált függvények, interbase, cikkek, programozás - programozás C, Delphi, C #

Felhasználó által definiált függvények

Gyakran használó programozók más adatbázis-kiszolgálók, akkor hallani a véleményét, hogy az SQL InterBase nem különbözik a sokféle beépített funkciókat. Technikailag egy ilyen nézet van egy alap, de a fejlesztők InterBase szándékosan ment ez a korlátozás. Amint azt már többször hangsúlyoztuk, InterBase különbözik szerény rendszer követelményeinek, és kis helyet vesz igénybe a merevlemezen. A kis méretű, a fájl diktált, különösen az, hogy az InterBase nincs túlterhelve a különböző opcionális, és általában ritkán használt funkciókat Ehelyett InterBase is képes kiterjeszteni az alapfelszereltség a kiegészítések, amelyek szükségesek az adott adatbázisban. Így a fejlesztő végre alkalmazásaik még az olyan feladatokat, amelyeket soha nem szerepelnek a szállítási adatbázis szerverek.

A mechanizmus a csatlakoztatási lehetőségek

Különösen a tágulási SQL InterBase alkalmassága egy olyan mechanizmust biztosít a felhasználó által definiált függvények (felhasználó által definiált függvények). Tudod teremt egy dynamic link library (Dynamic Link Library) segítségével bármilyen fejlesztési rendszer, amely lehetővé teszi, hogy a futtatható fájlokat ebben a formátumban. Különösen azt lehet használni Borland Delphi, Borland C ++ Builder, Microsoft Visual C ++, és így tovább. D. Ezután meg kell tenni a kapott DLL a könyvtár, amelyből InterBase hatására a könyvtár és állapítsa meg a kívánt funkciót a DLL az adatbázis segítségével a DECLARE parancs KÜLSŐ FUNCTION. Akkor hivatkozhat ezeket a funkciókat, mintha beépített funkciói InterBase.

InterBase a 6.0 verzió szükséges, hogy a DLL bármelyik felsorolt ​​könyvtárak a PATH környezeti változó InterBase 6 és fel (ideértve a klónok Firebird és zöldharkály) bekezdése előírja, hogy a DLL került egy speciális UDF könyvtárat a megosztott könyvtár InterBase telepítést

Hozzon létre egyéni funkciók

Nem lakunk az összes funkciók létrehozása egyedi funkció, hiszen ez a mechanizmus elég egyszerű, azonban azt mutatják, írásban és összekötő egyik funkciója a példa. Mivel a fejlesztés eszköze fogjuk használni Borland Delphi. Például a standard is alkalmazni EMPLOYEE.GDB tárol.
Példánkban létrehozunk egy függvényt, amely konvertálja a string nagybetűs. Egy ilyen funkció akkor lehet hasznos, ha nem adja meg LEVÁLOGAT lehetőség a húr területeken. Ezen felül, a munka-paramétereket a szabály, okozza a legnagyobb számú kérdés létrehozásakor a felhasználó által definiált függvények. Persze, azt feltételezzük, hogy Ön ismeri a létrehozásának elvét DLL segítségével Delphi.

Dinamikus könyvtár exportál egy funkció: StrUpperCase. Átviteléhez-paramétereket, valamint a függvény eredménye használjuk Pchar típusú, azaz. Dinamikus vonal határolja szimbólumok # 0. A jelentését a funkció kód egyértelmű: így sz karakterláncot nagybetűvel a szokásos funkció AnsiUpperCase. Ez a funkció jól működik a magyar betűk, ha a rendszer van telepítve orosz kódlapot. Ezután, hogy mi a memóriát a kapott változó, a malloc - alapfelszereltség a Windows. Már csak azt kell másolni az érték egy átmeneti változó TMP környezeti változó eredménnyel. Fordítsuk le a könyvtár, és a maradék TestUDF.dll fájlt a kívánt könyvtárba. Ha használja InterBase 6.x vagy klónok, ez egy könyvtár \ UDF található, amely a kiszolgáló telepítési könyvtár. Meg kell regisztrálni a funkció az adatbázisban. A regisztrációhoz meg kell futtatni a DECLARE KÜLSŐ funkció, mely a következő szintaxist:

DECLARE KÜLSŐ függvény neve [adattípus | CSTRING (int)
[, Datatype | CSTRING (int). ]]
Visszatér (adattípus [értékben] | CSTRING (int)> [FREE_IT]
ENTRY_POINT 'entryname'
MODULE_NAME 'modulename';

Paraméter neve - a neve a felhasználó által megadott függvény az adatbázisban. Nem kell, hogy egybeessen az igazi neve a funkciót a DLL.
Datatype paraméter határozza meg, hogy milyen típusú paramétereket. A paraméterek a következő megkötésekkel:

  • Az összes paraméter átadása hivatkozás;
  • kimeneti paraméter (függvény érték) lehet által visszaadott értéket;
  • paramétereket nem lehet tömböket.

Ha a használni kívánt szöveges adatok, akkor használja CSTRING zárójelben az meg kell határozni a maximális hosszát a húr. Ha a string egy függvény eredménye, mindig telt referenciaként, nem érték.
Paraméter FREE_IT pontok InterBase, hogy miután a kívánt funkciót automatikusan kiadja a lefoglalt memóriát a paramétereket. Nyilvánvaló, hogy ez a lehetőség csak akkor van szükség, ha a könyvtár maga mm megosztott memória minden funkció paramétereit.
A entryname paraméter nevét fel kell tüntetni a funkciót a DLL, hogy toruyu valójában akar nyilatkozni, mint a felhasználó által definiált függvény.
A modulename paraméter meg kell határoznia a DLL fájl nevét, ami által bejelentett felhasználói funkció.
Meg kell jegyezni, hogy a paraméterek entryname és modulename érzékeny.
Így, hogy adjunk a funkció az adatbázisban, meg kell futtatni a következő parancsot:

DECLARE KÜLSŐ FUNCTION USTRUPPERCASE
cstring (254)
RETURNS cstnng (254) FREE_IT
ENTRY_POINT 'StrUpperCase' MODULE_NAME 'TestUDF.dll'

Ezt követően, fel tudjuk használni egy új funkció minden USTRUPPERCASE SQL-lekérdezés. Például, tudjuk ellenőrizni, hogy a funkció a következő lekérdezést:

SELECT USTRUPPERCASE (z) FROM OSZTÁLY

Lekérdezés nevét a szervezeti egységek az osztály menetrend:

Ábra 1.5. Az eredmény segítségével UDF USTRUPPERCASE

Láttuk egy példa, hogyan lehet bővíteni a rendelkezésre álló SQL-függvények segítségével a felhasználó által definiált függvények mechanizmus. Ezzel az egyszerű, de nagyon hatékony eszköz, akkor lehet, hogy a feldolgozás az üzleti szabályok az adatbázisokat sokkal hatékonyabban és kényelmesebben. Tény, hogy a mechanizmus az egyedi funkciók InterBase egyetlen komoly korlátozás - nem tudja kezelni a NULL-paramétereket. A többi funkció a szokás „kiterjesztés” SQL függ az Ön igényeinek.
Egy széles választéka UDF könyvtárak, valamint részletesebb információt azok használatát és fejlesztését mindig megtalálható a weboldalak és www.InterBaseworld.com www.ibase.ru.

Borland InterBase 6.x és klónok Firebird és zöldharkály - termékek, amelyeket nemzetközi fogyasztói és lehetővé teszi, hogy a munka sok különböző nyelven, köztük magyarul. Azonban az alapértelmezett InterBase úgy tervezték, hogy az angol nyelvet, ezért annak érdekében, hogy tárolja egy adatbázisban a cirill ábécét, és képes legyen visszaállítani olvasható formában, meg kell tenni egy sor olyan intézkedést a „oroszosítást” az adatbázis és a felvételét támogatja a cirill ábécé kliens alkalmazások.