ページの先頭行へ戻る
Symfoware Server V10.0.0/V10.0.1 アプリケーション開発ガイド(埋込みSQL編)

5.2.3 ファンクションルーチンの実行

関数として定義したファンクションルーチンを実行するには、SQL文の選択リストや値指定などに指定して実行します。ファンクションルーチンを呼び出すアプリケーションのコンパイル・リンクでは、sqlcc、sqlfcc、sqlpcobコマンドに、-W2000オプションを指定してください。以下に、SQL文の記述例を示します。

スキーマ名およびルーチン名は、それぞれ、“SCM1”、“USERFUNC001”であるとします。

SELECT SCM1.USERFUNC001(NAME, CODE, AGE)
       FROM SCM1.CUSTOMER
       WHERE AGE BETWEEN :AGE1 AND :AGE2 ;

ファンクションルーチンは、Symfoware/RDBから新たに起動されるプロセスで実行されます。ファンクションルーチンが動作するプロセスの実効ユーザIDは、RDBシステム内で1つを指定します。実効ユーザIDの指定は、システム用の動作環境ファイルの実行パラメタEXTERNAL_PROCESS_USERで行います。

参照

システム用の動作環境ファイルの実行パラメタについては“セットアップガイド”を参照してください。

ファンクションルーチンを実行するプロセスが異常終了した場合の注意事項

ファンクションルーチンを実行するプロセスが何らかの原因で異常終了した場合、以下のエラーメッセージが出力されます。

SolarisLinuxコンソールおよびRDBREPORTで指定したメッセージログファイルに、以下のエラーメッセージが出力されます。

Tue Apr 17 17:47:07 2007
rdb: INFO: qdg13783i:ファンクショルーチンを実行したプロセスのコアファイルを採取しました コアファイル名は
/usr/local/rdb1/rdbcore/core_fnc_9356.070417.174709です (システム名=rdb1) (注1)

Tue Apr 17 17:47:07 2007
rdb: INFO: qdg14248i:OSで設定されたコアファイルの出力規約に従いコアファイルを採取しました プロセス名 rdbsfunc プロセスID 10865 ユーザID 0 グループID 0 (システム名=rdb1) (注1)

Tue Apr 17 17:47:08 2007
rdb: ERROR: qdg13781u:ファンクションルーチンを実行するプロセスが異常終了しました 原因=signal number : 11 (システム名=rdb1)

Tue Apr 17 17:47:09 2007
rdb: ERROR: qdg13782u:ファンクションルーチンのライブラリ内で異常が発生しました (システム名=rdb1)    (注2)

注1) qdg13783iとqdg14248iは以下の条件により、どちらか一方が出力されます。

Solarisの場合

qdg13783iが出力される場合

以下の条件をすべて満たす場合、qdg13783iが出力されます。

  • coreadmコマンドを使用して、OSのコアファイルの出力規約にコアファイルの出力先ディレクトリを指定していない

  • コアファイル名に“core”を指定している

qdg14248iのメッセージが出力される場合

以下の条件のいずれかを満たす場合、qdg14248iのメッセージが出力されます。

  • coreadmコマンドを使用して、OSのコアファイルの出力規約にコアファイルの出力先ディレクトリを指定している

  • コアファイル名に“core”以外を指定している

Linuxの場合

qdg13783iが出力される場合

以下の条件をすべて満たす場合、qdg13783iが出力されます。

  • カーネルパラメタkernel.core_patternを使用して、OSのコアファイルの出力規約にコアファイルの出力先ディレクトリを指定していない

  • コアファイル名に“core”を指定している

qdg14248iのメッセージが出力される場合

以下の条件のいずれかを満たす場合、qdg14248iのメッセージが出力されます。

  • カーネルパラメタkernel.core_patternを使用して、OSのコアファイルの出力規約にコアファイルの出力先ディレクトリを指定している

  • コアファイル名に“core”以外を指定している

注2) qdg13782uのメッセージが出力された場合は、ファンクションルーチンのライブラリ内で、何らかの原因で異常が発生したことを示します。メッセージに示された原因の情報をもとに、異常終了した原因を調査してください。

WindowsイベントログおよびRDBREPORTで指定したメッセージログファイルに、以下のエラーメッセージが出力されます。

qdg13783i:ファンクショルーチンを実行したプロセスのコアファイルを採取しました コアファイル名はcore_fnc_1496.20070417.205903です (システム名=RDB1)

qdg13781u:ファンクションルーチンを実行するプロセスが異常終了しました 原因=exception code : 0xc0000005 (システム名=RDB1)

qdg13782u:ファンクションルーチンのライブラリ内で異常が発生しました (システム名=RDB1)    (注)

注) qdg13782uのメッセージが出力された場合は、ファンクションルーチンのライブラリ内で、何らかの原因で異常が発生したことを示します。メッセージに示された原因の情報をもとに、異常終了した原因を調査してください。