Alkalmazásfejlesztés: Kiszolgálói alkalmazások programozása

Többszörös eredményhalmaz nyelvfüggetlen futtatórendszer (Common Language Runtime, CLR) eljárásai

Az egyetlen nyelvfüggetlen futtatórendszer (Common Language Runtime, CLR) eljárás által visszaküldhető eredményhalmazok száma korlátozott. Ezt a korlátot az szabja meg, hogy a DB2 .NET adatszolgáltatója egyetlen kapcsolódáson keresztül maximum hány DB2DataReader objektumot képes egyidejűleg támogatni. A párhuzamos aktív adatolvasás támogatása lehetővé teszi több DB2DataReader objektum megnyitását egyazon összeköttetésen belül. Ebből fakadóan az eredményhalmazok visszaküldhetők egy CLR eljárástól.

A CLR (Common Language Runtime) rutinvégrehajtás-vezérlési módjai (EXECUTION CONTROL tagmondat)

Adatbázis-adminisztrátorként vagy alkalmazásfejlesztőként felmerülhet az igény a saját DB2 Universal Database (UDB) külső rutinokkal társított szerkezetek megóvására a nem kívánt beavatkozásoktól, melyet a rutinok műveleteinek futásidejű korlátozásával oldhat meg. A DB2 .NET CLR rutinok támogatják olyan külső vezérlési mód alkalmazását, amely a futásidőben azonosítja a rutin számára engedélyezett műveleteket. A futásidő alatt a DB2 UDB képes érzékelni, ha a rutin megkísérel végrehajtani egy a megadott végrehajtás-vezérlési mód területén kívül eső műveletet. Ezzel segítséget nyújt annak megállapításában, hogy egy adott elrendezés sérült-e.

Egy CLR rutin végrehajtás-szabályozási módjának beállításához adja meg a nem kötelező EXECUTION CONTROL tagmondatot a rutin CREATE utasításában. Az érvényes módok:

Egy meglévő CLR rutin végrehajtás-szabályozási módjának módosításához hajtsa végre az ALTER PROCEDURE vagy az ALTER FUNCTION utasítást.

Ha az EXECUTION CONTROL tagmondat nincs megadva egy CLR rutinnál, alapértelmezésben a CLR rutin a leginkább szigorú SAFE módban fut. A SAFE végrehajtás-szabályozási módban futó rutinok csak azokat az erőforrásokat érik el, amelyeket az adatbázis-kezelő vezérel. Az ennél kevésbé szigorú módok (FILEREAD és FILEWRITE) lehetővé teszik a rutin számára, hogy hozzáférjen a helyi fájlrendszer vagy a hálózat fájljaihoz. Az UNSAFE mód esetén nincs korlátozás a rutin működésére vonatkozólag. Az UNSAFE móddal megadott rutinok végrehajthatnak bináris kódokat.

Ezek a szabályozási módok a megengedett műveletek hierarchiáját alkotják: egy kevésbé szigorú módban mindazok a műveletek megengedettek, amelyek a nála szigorúbb módokban engedélyezettek. Például a NETWORK mód megengedi, hogy egy rutin hozzáférjen a hálózat fájljaihoz, a helyi fájlrendszeren lévő fájlokhoz, valamint az adatbázis-kezelő által vezérelt erőforrásokhoz. Mindig az adott helyzetben lehetséges legszigorúbb szabályozási módot kell használni, és kerülni kell az UNSAFE mód alkalmazását.

Ha a DB2 UDB azt észleli futásidő alatt, hogy valamely CLR rutin olyan műveletet próbál végrehajtani, amelyet a szabályozási módja nem enged meg számára, a DB2 UDB hibaüzenetet küld (SQLSTATE 38501).

Az EXECUTION CONTROL tagmondat csak a LANGUAGE CLR rutinokhoz adható meg. Az EXECUTION CONTROL tagmondat alkalmazásának hatóköre csak magára a .NET CLR rutinra korlátozódik, és nem hat a rutin által esetleg meghívott más rutinokra.

Maximális pontosság és a tizedeshelyek száma CLR (common language runtime) rutinoknál

A DB2 Universal Database (UDB) termékben a DECIMAL (tízes számrendszerű) adattípus 31 számjegyes pontossággal és 28 tizedeshellyel szerepel. A .NET CLR System.Decimal adattípus 29 számjegyes pontosságot és 28 tizedeshelyet használ. Ebből kifolyólag a DB2 UDB külső CLR rutinjai nem adhatnak (2^96)-1 értéknél nagyobb értéket egy System.Decimal adattípusú változónak, mert ez a legnagyobb érték, amit 29 számjegyes pontossággal, 28 tizedeshellyel ábrázolni lehet. A DB2 UDB futásidejű hibát okoz (SQLSTATE 22003, SQLCODE -413), ha ilyen értékadás történik.

Ha egy rutin CREATE utasításának végrehajtásakor egy DECIMAL adattípusú paraméter definíciójában 28-nál több tizedeshely szerepel, a DB2 UDB hibát jelez (SQLSTATE 42611, SQLCODE -604).

[ Oldal eleje |Előző oldal | Következő oldal | Tartalom ]