Разработка прикладных программ: Разработка прикладных программ сервера

Несколько наборов результатов процедур общего языкового модуля (CLR)

Максимальное число результатов, которые могут возвращать процедуры общего языкового модуля (common language runtime, CLR), ограничено. Предельное число результатов определяется максимальным числом объектов DB2DataReader, которые DB2 .NET Data Provider может одновременно поддерживать открытыми в одном соединении. Поддержка одновременных активных процессов чтения данных позволяет открывать в соединении несколько объектов DB2DataReader. Поэтому процедура CLR может возвращать несколько наборов результатов.

Режимы управления выполнением (условие EXECUTION CONTROL) подпрограмм общего языкового модуля (CLR)

Администратор базы данных или разработчик прикладной программы может защитить сборочные модули, связанные с внешними подпрограммами DB2 Universal Database (UDB), от нежелательного вмешательства, ограничив действия подпрограмм во время выполнения. Подпрограммы CLR DB2 .NET поддерживают спецификацию режима управления выполнением, в которой задаются типы действий, которые разрешено выполнять подпрограмме. Во время выполнения DB2 UDB способна определить, что подпрограмма пытается выполнить действия, которые не разрешены ее режимом управления выполнением, и это может помочь при определении вмешательства в сборочный модуль.

Чтобы задать режим управления выполнением подпрограммы CLR, задайте необязательное условие EXECUTION CONTROL в операторе создания подпрограммы. Допустимые режимы:

Чтобы изменить режим управления выполнением в существующей подпрограмме CLR, выполните оператор ALTER PROCEDURE или ALTER FUNCTION.

Если условие EXECUTION CONTROL для подпрограммы CLR не задано, по умолчанию она выполняется в самом жестком из режимов управления выполнением - SAFE. Подпрограммы, созданные с этим режимом управления выполнением могут обращаться только к ресурсам, управляемым менеджером баз данных. В менее жестких режимах управления выполнением подпрограмме разрешается доступ к файлам в локальной файловой системе (FILEREAD или FILEWRITE) или в сети. Режим управления выполнением UNSAFE задает, что поведение подпрограммы никак не ограничивается. Подпрограммам, определенным с режимом UNSAFE, разрешено выполнять двоичный код.

Эти режимы управления представляют иерархию разрешенных действий, в которой расположенный выше режим включает действия более низких уровней иерархии. Например, режим управления выполнением NETWORK разрешает подпрограмме обращаться к файлам в сети, файлам в локальной файловой системе и ресурсам под управлением менеджера баз данных. Используйте возможно более жесткий режим управления выполнением; режим UNSAFE лучше не использовать.

Если DB2 UDB определит, что во время выполнения подпрограмма CLR пытается выполнить действие, не разрешенное ее режимом управления выполнением, DB2 UDB вернет ошибку (SQLSTATE 38501).

Условие EXECUTION CONTROL можно задавать только для подпрограмм LANGUAGE CLR. Сфера применимости условия EXECUTION CONTROL ограничена самой подпрограммой .NET CLR и не распространяется на вызываемые ей подпрограммы.

Максимальная десятичная точность и масштаб в подпрограммах общего языкового модуля (CLR)

В DB2 Universal Database (UDB) тип данных DECIMAL представлен с точностью 31 цифр и масштабом 28 цифр. Для типа данных .NET CLR System.Decimal точность ограничена 29 цифрами, а масштаб - 28 цифрами. Таким образом, внешние подпрограммы CLR DB2 UDB не должны назначать переменным с типом данных System.Decimal значения больше (2^96)-1 (это наибольшее число, которое можно представить при точности 29 цифр и масштабе 28 цифр). Если происходит подобное присваивание, DB2 UDB генерирует ошибку времени выполнения (SQLSTATE 22003, SQLCODE -413).

При выполнении оператора CREATE, если задан параметр типа данных DECIMAL с масштабом больше 28, DB2 UDB генерирует ошибку (SQLSTATE 42611, SQLCODE -604).

[ Начало страницы |Страница назад | Страница вперед | Содержание ]