Podręcznik Application Development Guide: Programming Server Applications

Procedury środowiska wykonawczego CLR (Common language runtime) zwracające wiele tabel wynikowych

Maksymalna liczba tabel wynikowych, jaką może zwrócić procedura CLR, jest ograniczona. Limit zależy od maksymalnej liczby obiektów DB2DataReader obsługiwanych jednocześnie przez Dostawcę danych DB2 dla platformy .NET w jednym połączeniu. Obsługa wielu działających współbieżnie obiektów odczytujących dane umożliwia otwarcie wielu obiektów DB2DataReader w jednym połączeniu. Dlatego procedura CLR może zwrócić więcej niż jedną tabelę wynikową.

Tryby sterowania wykonywaniem procedur środowiska wykonawczego CLR (Common language runtime) (klauzula EXECUTION CONTROL)

Administrator bazy danych lub twórca aplikacji może zabezpieczyć zespoły powiązane z zewnętrznymi procedurami DB2 Universal Database (UDB) przed niepożądaną infiltracją, ograniczając działania procedur w czasie wykonywania. Procedury CLR DB2 .NET obsługują specyfikację trybu sterowania wykonaniem, identyfikującą typy działań, które procedura może wykonywać w czasie wykonywania. W czasie wykonywania program DB2 UDB może wykryć, czy procedura próbuje wykonywać działania spoza zakresu określonego trybu sterowania wykonaniem, co może być pomocne w określeniu, czy dany zespół był infiltrowany.

Aby ustawić tryb sterowania dla procedury CLR, należy podać opcjonalną klauzulę EXECUTION CONTROL w instrukcji CREATE dla procedury. Poprawne tryby to:

Aby zmodyfikować tryb sterowania wykonaniem dla istniejącej procedury CLR, należy wykonać instrukcję ALTER PROCEDURE lub ALTER FUNCTION.

Jeśli klauzula EXECUTION CONTROL nie zostanie określona dla procedury CLR, domyślnie procedura CLR jest uruchamiana z najbardziej restrykcyjnym trybem sterowania wykonaniem - SAFE. Procedury utworzone z tym trybem sterowania wykonaniem mają dostęp tylko do zasobów kontrolowanych przez menedżera bazy danych. Mniej restrykcyjne tryby sterowania wykonaniem umożliwiają procedurom dostęp do plików w lokalnym systemie plików (FILEREAD lub FILEWRITE) lub w sieci. W trybie sterowania wykonaniem UNSAFE na zachowanie procedury nie są nakładane żadne ograniczenia. Procedury zdefiniowane z trybem sterownia wykonaniem UNSAFE mogą wykonywać kod binarny.

Te tryby sterowania reprezentują hierarchię dozwolonych działań, a tryby położone wyżej w hierarchii obejmują działania dozwolone na niższym poziomie hierarchii. Na przykład tryb sterowania wykonaniem NETWORK zezwala procedurom na dostęp do plików w sieci, w lokalnym systemie plików oraz do zasobów kontrolowanych przez menedżera bazy danych. Należy korzystać z jak najbardziej restrykcyjnych trybów sterowania wykonaniem i unikać korzystania z trybu UNSAFE.

Gdy program DB2 UDB wykryje w czasie wykonywania, że procedura CLR próbuje wykonać działanie nie objęte jej trybem sterowania wykonaniem, DB2 zwróci błąd (SQLSTATE 38501).

Klauzulę EXECUTION CONTROL można określić tylko dla procedur CLR LANGUAGE. Zasięg zastosowania klauzuli EXECUTION CONTROL jest ograniczony do samej procedury CLR .NET i nie obejmuje żadnych innych wywoływanych przez nią procedur.

Maksymalna precyzja dziesiętna i skala w procedurach CLR

Typ danych DECIMAL jest reprezentowany w programie DB2 Universal Database (UDB) z precyzją 31-cyfrową i skalą 28-cyfrową. Typ danych .NET CLR System.Decimal ma precyzję ograniczoną do 29 cyfr, a skalę do 28 cyfr. Dlatego zewnętrzne procedury CLR programu DB2 UDB nie mogą przypisywać zmiennej typu System.Decimal wartości większej niż (2^96)-1 - największej wartości, jaka może być reprezentowana za pomocą precyzji 29-cyfrowej i skali 28-cyfrowej. Jeśli nastąpi takie przypisanie, program DB2 UDB wygeneruje błąd czasu wykonania (SQLSTATE 22003, SQLCODE -413).

Jeśli podczas wykonywania procedury zostanie wykryta instrukcja CREATE z parametrem typu danych DECIMAL zdefiniowanym z precyzją większą niż 28, program DB2 UDB wygeneruje błąd (SQLSTATE 42611, SQLCODE -604).

[ Początek strony |Poprzednia strona | Następna strona | Spis treści ]