DbExecute システム関数を使用すると、指定したデータベースに対してストアード・プロシージャーを実行できます。

ワークフロー・システムの DbExecute システム関数を定義します。詳しくは、
DbExecute 接続の設定を参照してください。新規 DbExecute接続を作成するには、あらかじめアプリケーション・サーバー上の DBExecute データベースのデータベース・タイプ用に XA および非 XA JDBC プロバイダーを構成して、適切な JDBC ドライバーが構成されるようにしておく必要があります。

DbExecute システム関数を指定するには、以下の手順を実行します。
- General System Palette からワークフロー・マップ上に、DbExecute ステップをドラッグします。
- データベース名を入力してください。
- 実行するストアード・プロシージャーの名前を入力します。
制約事項: ストアード・プロシージャーの作成で使用した名前により、ストアード・プロシージャーの呼び出し方法が決まります。Process Designer では DBExecute システム関数に、引用符で囲んだストアード・プロシージャー名を使用できないため、ストアード・プロシージャー名を引用符で囲まないでください。
- System ステップから呼び出される任意のデータベース・ストアード・プロシージャーのパラメーターは、すべて次のように宣言される必要があります。
- out - SQL Server
- in out - Oracle
- inout - DB2®
すなわち、ストアード・プロシージャーでパラメーター値を更新できます。ストアード・プロシージャーは、すべてのパラメーターの値 (一部は更新された値) を呼び出し側に返します。更新された値は、ストアード・プロシージャーにパラメーターとして渡された、データ・フィールドに格納された値に反映されます。
ワークフロー・プロパティーでデータ・フィールドを定義し、各種ステップのパラメーターとして適切なデータ・フィールドを指定します。
データ型はストアード・プロシージャーの指定と一致する必要があるため、使用可能なデータ型は以下のいずれかです。
Designer のパラメーター・タイプ |
Oracle のパラメーター・タイプ |
SQL サーバーのパラメーター・タイプ |
DB2 のパラメーター・タイプ |
ストリング |
varchar |
varchar |
varchar |
整数 |
number |
int |
int |
ブール型 |
number |
bit |
number |
浮動小数点型 |
number |
float |
float |
時刻型 |
date |
datetime |
timestamp |
ストアード・プロシージャーのパラメーターに、配列は使用できません。例えば、15 個の文字列型パラメーターを別々に渡すことはできますが、15 個のストリングの配列にして 1 つのパラメーターとして渡すことはできません。索引を指定して、配列の中の 1 つの要素を使用することはできます。例えば、配列の最初の要素を指定する構文は、fieldname[1] です。
ストアード・プロシージャーから NULL として返されるパラメーターの処理
- ストアード・プロシージャーによりストリング・パラメーターが NULL に設定されると、ワーク・オブジェクトのデータ・アイテムは、空のストリングを受け取ります。
- ストアード・プロシージャーにより指定された日付/時刻型、整数型、または浮動小数点型のパラメーターが NULL であった場合、例外が発生します。(これらのデータ型は NULL を表す形式を持たないためです)。さらに、それを説明するメッセージがログに記録されます。
- ブール型パラメーターが NULL に設定されると、例外が発行されます。さらに、それを説明するメッセージがログに記録されます。
|
Oracle |
SQLServer |
DB2 |
プロシージャー内のパラメーターの最大数 |
1024 |
1024 |
1024 |
文字列型パラメーターの最大文字数 |
4000 |
4000 |
4000 |
データベースのストアード・プロシージャーは例外をスローする可能性があるため、ストアード・プロシージャー内、またはワークフローの例外マップ内での例外処理を検討してください。
FileNet® P8 バージョン 3.5.2 以前からアップグレードした場合で、なおかつ Microsoft SQL Server を使用している場合は、削除または更新ステートメントで以前にはなかった例外が発生する可能性があります。WHERE 節を含む DELETE 文または UPDATE 文でレコードが何も選択されない場合、データベースは例外を返します。例えば、Name=Don であるすべてのレコードを削除する際、条件 Name=Don を満たすレコードが 1 件もない場合、ストアード・プロシージャーはデータベースからエラーを受け取ります。これらの例外をストアード・プロシージャーでキャッチしないと、ワーク・オブジェクトが例外を受け取り、例外マップまたは Malfunction queue キューに入ります。
ワークフローの実行中に、DbExecute システム関数で障害が発生した場合、そのエラーに関する情報はシステム・メッセージのログに記録されます。
ストアード・プロシージャーが制限時間内にメッセージを返さないと、タイムアウトが発生し、ワーク・オブジェクトは例外を受け取り、Conductor キューに入ります。デフォルトのタイムアウト値は 3600 秒 (1 時間) です。