Vývoj aplikací: Programování aplikací serveru

Procedury modulu CLR (Common Language Runtime) pro více výsledných sad

Maximální počet výsledných sad, které může vrátit procedura modulu CLR (Common Language Runtime), je omezený. Limit je dán maximálním počtem objektů DB2DataReader, jejichž současné otevření v rámci jednoho připojení může podporovat poskytovatel dat DB2 .NET. Podpora souběžného aktivního čtení dat umožňuje otevření více objektů DB2DataReader v rámci připojení. Procedura CLR pak může vrátit více výsledných sad.

Režimy řízení provádění rutin CLR (Common Language Runtime) (klauzule EXECUTION CONTROL)

Jako administrátor databáze nebo vývojář aplikace budete zřejmě chtít chránit sestavení přidružená k externím rutinám produktu DB2 Universal Database (UDB) před nevítanými zásahy omezením akcí rutiny v době zpracování. Rutiny CLR .NET produktu DB2 podporují specifikaci režimu řízení provedení, který určuje, jaký typ akcí může rutina v době zpracování provádět. V době zpracování může produkt DB2 UDB zjistit, zda se rutina pokusila provést akci mimo obor svého režimu řízení provedení, což může být užitečné při určování, zda bylo zabezpečení sestavení ohroženo.

Chcete-li nastavit režim řízení provedení rutiny CLR, zadejte pro tuto rutinu do příkazu CREATE volitelnou klauzuli EXECUTION CONTROL. Platné režimy jsou následující:

Chcete-li změnit režim řízení provedení v existující rutině CLR, proveďte příkaz ALTER PROCEDURE nebo ALTER FUNCTION.

Pokud není klauzule EXECUTION CONTROL pro rutinu CLR zadána, bude rutina CLR standardně spuštěna v nejvíce omezujícím režimu řízení provedení - SAFE. Rutiny vytvořené v tomto režimu řízení provedení mají přístup pouze ke zdrojům řízeným správcem databází. Méně omezující režimy řízení provedení umožňují rutině přístup k souborům v lokálním souborovém systému (FILEREAD nebo FILEWRITE) nebo v síti. Režim řízení provedení UNSAFE určuje, že chování rutiny nemá být žádným způsobem omezeno. Rutiny definované v režimu řízení provedení UNSAFE mohou spouštět binární kód.

Tyto režimy řízení reprezentují hierarchii povolených akcí. Režim řízení na vyšší úrovni vždy obsahuje akce, které jsou v hierarchii pod ním povoleny. Například režim řízení provedení NETWORK povoluje rutině přístup k souborům v síti, k souborům v lokálním souborovém systému a ke zdrojům, které jsou spravovány správcem databází. Používejte vždy nejvíce omezující režim řízení provedení a vyhýbejte se používání režimu UNSAFE.

Pokud produkt DB2 UDB v době zpracování zjistí, že se rutina CLR pokouší o akci mimo obor svého režimu řízení provedení, vrátí produkt DB2 UDB chybu (SQLSTATE 38501).

Klauzule EXECUTION CONTROL může být zadána pouze pro rutiny CLR LANGUAGE. Obor použitelnosti klauzule EXECUTION CONTROL je omezen pouze na rutinu CLR .NET a není možné jej rozšířit na žádné další rutiny, které lze volat.

Maximální přesnost a počet desetinných míst v rutinách CLR (Common Language Runtime)

Datový typ DECIMAL je v produktu DB2 Universal Database (UDB) reprezentován přesností na 31 číslic s 28 desetinnými místy. Datový typ .NET CLR System.Decimal je omezen na přesnost 29 číslic a 28 desetinných míst. Proto nesmí externí rutiny CLR produktu DB2 UDB přiřadit do proměnné datového typu System.Decimal hodnotu větší než (2^96)-1, což je největší hodnota, kterou lze reprezentovat pomocí 29 platných číslic a 28 desetinných míst. Pokud k takovému přiřazení dojde, produkt DB2 UDB vygeneruje běhovou chybu (SQLSTATE 22003, SQLCODE -413).

Je-li při provádění příkazu rutiny CREATE definován parametr datového typu DECIMAL s větším počtem desetinných míst než 28, produkt DB2 UDB ohlásí chybu (SQLSTATE 42611, SQLCODE -604).

[ Začátek stránky |Předchozí stránka | Další stránka | Obsah ]