Замечания по выпуску


35.3 Глава 7. Stored Procedures

35.3.1 Ошибка типа DECIMAL в Java-процедурах Linux

Эта ошибка происходит из-за того, что комплект разработчика IBM для Java не создает связей для своих библиотек в каталоге /usr/lib. Модель защиты для процедур DB2 не разрешает им доступ к библиотекам за пределами стандартных библиотек системы. Чтобы включить в Linux поддержку DECIMAL в Java-процедурах, выполните следующие действия:

  1. Создайте символические связи из библиотек комплекта разработчика IBM для Java в /usr/lib/, введя следующую команду с полномочиями root:

    Для комплекта разработчика IBM для Java 1.1.8:

       ln -sf /usr/jdk118/lib/linux/native_threads/* /usr/lib/
    

    Для комплекта разработчика IBM для Java 1.3:

       ln -sf /opt/IBMJava2-13/jre/bin/*.so /usr/lib/
    
  2. Введите команду ldconfig, чтобы исправить список библиотек уровня системы.

35.3.2 Использование указателей в рекурсивных хранимых процедурах

Во избежание ошибок при использовании процедур SQL или хранимых процедур, написанных на встроенном SQL перед использованием рекурсивного оператора CALL закройте все открытые указатели.

Например, предположим, что в хранимой процедуре MYPROC содержится следующий фрагмент программного кода:

   OPEN c1;
CALL MYPROC();
CLOSE c1;

При вызове MYPROC DB2 возвратит ошибку, поскольку указатель c1 остается открытым, когда MYPROC выполняет рекурсивный оператор CALL. Конкретная ошибка, возвращаемая DB2, зависит от действия, выполняемого MYPROC над указателем.

Для успешного вызова MYPROC перепишите ее так, чтобы она закрывала все открытые указатели до вложенного оператора CALL, как показано в следующем примере:

OPEN c1;
CLOSE c1;
CALL MYPROC();

Во избежание ошибки закрывайте все открытые указатели перед использованием встроенного оператора CALL.

35.3.3 Написание хранимых процедур автоматизации OLE

В следующем абзаце (второй абзац раздела "Writing OLE automation Stored Procedures") пропущено последнее предложение:

   Написав код объекта автоматизации OLE, необходимо зарегистрировать методы
   этого объекта в качестве хранимых процедур при помощи оператора 
   CREATE PROCEDURE. Чтобы зарегистрировать хранимую процедуру 
   автоматизации OLE, используйте оператор CREATE PROCEDURE с 
   условием LANGUAGE OLE. Внешнее имя состоит из ID программы OLE,
   идентифицирующего этот объект автоматизации OLE, и имени метода, 
   разделенных символом ! (восклицательный знак). Объект автоматизации 
   OLE должен быть реализован как внутрипроцессный сервер (.DLL).


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