データベースアダプタ用 OTD の開発

Procedureストアドプロシージャーを選択する

  1. 手続きの選択と結果セットおよびパラメータ情報の指定」ウィンドウで、「追加」をクリックします。

    図 1–47 手続きの選択と結果セットおよびパラメータ情報の指定

    手続きの選択と結果セットおよびパラメータ情報の指定


    注 –

    手続きの完全修飾名は、スキーマ名とストアドプロシージャーテーブル名の 2 つの部分で構成されます。「生成される Java コードでは手続きの完全修飾名を使用します。」チェックボックスが選択されている場合、Java コラボレーション定義で生成されたコードが完全修飾名で表示されます。このチェックボックスが選択されていない場合は、ストアドプロシージャーテーブル名のみが表示されます。


  2. 手続きの選択」ウィンドウで、手続きの名前を入力するか、またはドロップダウンリストからテーブルを選択します。「検索」をクリックします。ワイルドカード文字も使用できます。

  3. 表示された「手続きの選択」リストボックスで、手続きを選択します。「了解」をクリックします。

    図 1–48 手続きの追加

    手続きの追加

  4. 選択した手続きに変更を加える場合は、「手続きの選択と結果セットおよびパラメータ情報の指定」ウィンドウで「パラメータの編集」をクリックします。次の図を参照してください。

    図 1–49 手続きパラメータ

    手続きパラメータ

  5. データ型を復元するには、「復元」をクリックします。操作が完了したら、「了解」をクリックします。

  6. OTD での Resultset ノードの生成方法を選択するには、「Resultsets の編集」をクリックします。

  7. 生成する Resultset ノードのタイプを追加するには、「追加」をクリックします。

    図 1–50 ResultSet の編集

    ResultSet の編集

    データベースウィザードでは、3 とおりの方法でストアドプロシージャーの ResultSet ノードを生成できます。「実行時」モード、「手動で」モード、および「アシスタンス」モードです。

    「実行時」モード 

    「実行時」モードでは、指定されたストアドプロシージャーをデフォルト値で実行して ResultSet を生成します。ストアドプロシージャーのビジネスロジックに基いて、0 個以上の ResultSet を実行結果として返すことができます。複数の ResultSet がある場合に、「実行時」モードですべての ResultSet が返されないときは、その他のモードを使用して ResultSet ノードを生成してください。 

    「アシスタンス」モード 

    「アシスタンス」モードでは、ユーザーがクエリーを指定し、それを実行して ResultSet ノードを生成できます。この操作を容易にするために、データベースウィザードは、指定されたストアドプロシージャーの内容を取得して表示しようとします。ただし、内容の取得は、全てのタイプのストアドプロシージャーでサポートされているわけではありません。ストアドプロシージャーは、SQL と外部の 2 種類に大きく分類できます。SQL ストアドプロシージャーは、CREATE PROCEDURE SQL 文を使用して作成されます。一方、外部ストアドプロシージャーは、Java などのホスト原語を使用して作成されます。外部ストアドプロシージャーでは、実行プランがデータベースに保存されないため、内容の取得はできません。「アシスタンス」モードを使用するときは、クエリーを実行する前に、テーブル名までを含めた実行文を強調表示させます。 

    「手動で」モード 

    「手動で」モードでは、もっとも柔軟な方法で ResultSet ノードを生成できます。このモードでは、ユーザーがノード名、元の列名、およびデータ型を手動で指定できます。この方法の欠点の 1 つは、ユーザーが元の列名やデータ型を知っている必要があることです。この方法は常に使用可能とは限りません。たとえば、次のクエリーに「3*C」という列名があります。 


    SELECT A, B, 3*C FROM table T

    これはデータベースによって生成されます。この場合は、「アシスタンス」モードの方が適しています。 

    データベースウィザードの「実行」モードで生成された ResultSet を変更する場合は、インデックスがストアドプロシージャーと一致していることを確認する必要があります。これにより、ResultSet インデックスが確実に保持されるようにします。 

  8. 手続きの選択と結果セットおよびパラメータ情報の指定」ウィンドウで、「次へ」をクリックして操作を続行します。


    注 –

    状況によっては、条件文が使用されている場合に、Select 文を使用するストアドプロシージャーが Resultset を返さないことがあります。この場合、Resultset の available() メソッドが true を返したとしても、next() メソッドの呼び出し時にデータは返されません。この結果は、使用するドライバのタイプと整合します。



    注 –

    Select の使用に加えて、Insert、Update、および Delete 操作を使用する場合、そのストアドプロシージャーは、使用された各操作の結果を返します。Select 文の Resultset を返すだけの場合は、enableResultSetsOnly() メソッドを呼び出すことをお勧めします。