この課題では、ウィザードを使用して DB2 SQL ストアード・プロシージャーを作成します。
このシンプルなストアード・プロシージャーは、従業員の組織 ID とユーザーが入力した値が一致する場合に、EMP_EMPLOYEE_DIM 表からその従業員の情報を返します。
ウィザードで、ストアード・プロシージャーでコードのベースとして使用するテンプレートを選択します。
この演習では、ウィザードで選択するテンプレートを作成します。
この演習で作成するようなシンプルなストアード・プロシージャーでは、
基本的なテンプレートのいずれかを使用するのが普通です。
しかしこの演習では、テンプレート作成のプロセスに詳しくなるためにテンプレートを作成します。
ワークベンチの中でルーチンを作成する場合、プロジェクト・ワークスペースにソース・コードを保存します。
SQL ストアード・プロシージャーを作成するには、次のようにします。
- 既存のテンプレートからテンプレートを作成します。
- をクリックします。 「設定」ウィンドウが開きます。
- と展開し、「テンプレート」をクリックします。
- 「テンプレート」ページで、コンテキストが db2luw_sp_sql である最初のテンプレートが表示されるまでスクロールダウンします。 このテンプレートの名前は、「Custom: You supply the SQL, return a result set」です。
- テンプレートをクリックして、「編集」をクリックします。 「テンプレートの編集」ウィンドウが開きます。
- 既存のテンプレート名を、GSDB4tutorial: Basic employee SEARCH statement というテキストで置き換えます。
- 既存のテンプレート説明を、次のテキストで置き換えます。
Return ID, name, and organization of all employees
in EMP_EMPLOYEE_DIM table.
- パターンで、番号記号が表示されている 2 つのコメント行 (-- #################) の間にあるコメント行をすべて削除します。
- [Your SQL to execute goes here] を、
次の SQL ステートメントで置き換えます。
SELECT EMPLOYEE_CODE, FIRST_NAME,
LAST_NAME, ORGANIZATION_CODE
FROM EMP_EMPLOYEE_DIM;
ここまでの手順が完了したテンプレートには、
次のような情報が含まれています。
- 「テンプレートの編集」ウィンドウで「OK」をクリックします。 新しい名前の追加のテンプレートを作成するか、既存のテンプレートを名前変更するかを指定するように求めるメッセージ・ボックスが表示されます。
- 「はい (Yes)」をクリックして、新規テンプレートを作成します。 そのテンプレートが「テンプレート」ページのリストに追加されます。
- 「設定」ウィンドウで「OK」をクリックします。
- 「データ・プロジェクト・エクスプローラー」ビューで、SPDevelopment プロジェクトを展開して「ストアード・プロシージャー」フォルダーを見つけます。
- 「ストアード・プロシージャー」フォルダーを右クリックし、を選択します。 「新規ストアード・プロシージャー」ウィザードが開きます。
- 「名前 (Name)」フィールドに SPEmployee と入力します。
- 「言語」フィールドで、「SQL」を選択します。
- GSDB4tutorial: Basic employee SEARCH statement テンプレートを選択して、
「完了」をクリックします。 ウィザードが終了し、ルーチン・エディターでそのストアード・プロシージャーが開くので、
ここでソース・コードを表示したり編集したりすることができます。
この時点で、ストアード・プロシージャーを保存、デプロイ、および実行していた場合、結果の表にはすべての従業員が表示されます。
しかし、018 組織に属する従業員だけを結果に表示させたいとします。
- エディターで以下のアクションを実行します。
- プロシージャー宣言に org 入力パラメーターを追加して、
宣言が次のようになるようにします。
CREATE PROCEDURE SPEmployee ( IN org CHAR(6) )
- EMP_EMPLOYEE_DIM の後ろのセミコロンを削除します。
- 以下の条件節を挿入します。
WHERE ORGANIZATION_CODE = org;
完了したストアード・プロシージャーには次のコードが含まれています。
CREATE PROCEDURE SPEmployee ( IN org CHAR(6) )
DYNAMIC RESULT SETS 1
P1: BEGIN
-- Declare cursor
DECLARE cursor1 CURSOR WITH RETURN for
SELECT EMPLOYEE_CODE, FIRST_NAME,
LAST_NAME, ORGANIZATION_CODE
FROM EMP_EMPLOYEE_DIM
WHERE ORGANIZATION_CODE = org;
-- Cursor left open for client application
OPEN cursor1;
END P1
- このストアード・プロシージャーを保存してから、ルーチン・エディターを閉じます。
ストアード・プロシージャー SPEmployee は、それを作成したプロジェクトの下の「ストアード・プロシージャー」フォルダー内の、「データ・プロジェクト・エクスプローラー」ビューにおいて表示されます。
これで、このストアード・プロシージャーをデプロイする準備ができました。