リリース情報


35.3 第 7 章 ストアード・プロシージャー

35.3.1 DECIMAL タイプは Linux Java ルーチンで失敗する

この問題は、IBM Developer Kit for Java が /usr/lib ディレクトリーにあるライブラリーに対するリンクを作成しないために起きます。 DB2 ルーチンのセキュリティ・モデルでは、標準システム・ライブラリーの外部にある ライブラリーにアクセスすることができません。Linux の Java ルーチンで DECIMAL をサポートできるようにするには、次のステップを実行してください。

  1. 次のコマンドを root 権限で実行することで、 IBM Developer Kit for Java ライブラリーから /usr/lib/ への記号リンクを 作成する。

    IBM Developer Kit for Java 1.1.8:

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

    IBM Developer Kit for 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 が再帰的 CALL ステートメントを実行するときに、カーソル c1 が まだオープンしているため、MYPROC が呼び出されたときに DB2 はエラーを返します。 DB2 から返される特定のエラーは、MYPROC がカーソルで実行するアクションによって 異なります。

MYPROC を正常に呼び出すためには、次の例のように、ネストされた CALL ステートメントの 前にオープン・カーソルをクローズするように、MYPROC を 書き換えてください。

OPEN c1;
CLOSE c1;
CALL MYPROC();

ネストされた CALL ステートメントを実行する前にオープン・カーソルをすべて クローズして、エラーを回避してください。

35.3.3 OLE 自動化ストアード・プロシージャーに関する記述

以下の段落の最後の文は、「OLE オートメーション・ストアード・プロシージャー」セクションの第 2 段落から欠落しています:

   OLE 自動化オブジェクトをコーディングした後、
   CREATE PROCEDURE ステートメントを使用して、そのオブジェクトの
   メソッドをストアード・プロシージャーとして登録する必要があります。
   OLE 自動化ストアード・プロシージャーを登録するには、
   LANGUAGE OLE 文節で CREATE PROCEDURE ステートメントを実行します。
   外部名は、OLE 自動化オブジェクトとメソッド名を ! (感嘆符) で区切って示す
   OLE progID で構成されています。OLE 自動化オブジェクトは、処理中の
   サーバー (.DLL) として実装する必要があります。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]