Oracle JDeveloperを使用したデータベース開発
このチュートリアルでは、Oracle
JDeveloperを使用してオフラインでデータベース開発を実行する方法を示します。
既存のデータベース表のモデル化、オフラインでの新規のビューの作成、変更内容のデータベースへの反映について学習します。
また、データベース内のPL/SQLオブジェクトを作成しテストする方法についても学習します。
約20分
このチュートリアルでは、以下のトピックについて説明します。
このアイコンの上にカーソルを置くと、すべてのスクリー
ンショットがロードし、表示されます。
(警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注:各手順に関連したスクリーンショットのみを表示する場合は、それぞ
れの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。
このチュートリアルでは、Oracle
JDeveloperのデータベース機能を使用して、次の作業を実行します。
 |
既存の表のモデル化 |
 |
オフライン・データベース・モデルの変更 |
 |
新規ビューのオフラインでの作成 |
 |
変更内容のデータベースへの反映 |
 |
データベース内のPL/SQLオブジェクトの作成とテスト |
ト
ピック・リストに戻る
データベースの更新作業に関する具体的な内容は、Human
Resources(HR)スキーマに若干の変更を加え、新規のデータベース・ビューを作成するというものです。
また、データベース内のPL/SQLオブジェクトの作成とテストも同時に依頼されます。
トピック・リストに戻る
このチュートリアルを始める前に次のことを確認してください。
| 1. |
Oracleサンプル・スキーマにアクセスできるか、またはインストール済みであるこ
と。
このOracle by Example(OBE)では、Oracle
Database 10gに含まれているHRスキーマを使用します。 HRスキーマのインストールおよびOracle
JDeveloper 10g内における接続の作成手順は、次のURLを参照してください。
http://www.oracle.com/technology/obe/obe1013jdev/common/OBEConnection.htm
|
| 2. |
Oracle JDeveloper 10g Release
3(10.1.3)にアクセスできるか、またはインストール済みであること。
|
| 3. |
<JDEV_HOME>\jdeveloper.exeをダブルクリック
して、Oracle JDeveloperを開始していること。
以前のバージョンから移行するかどうかを確認するメッセージが表示されたら、「No」
をクリックします。
Tip of the Dayウィンドウを閉じます。
.
|
トピック・リストに戻る
JDBC接続をまだ作成していない場合は、以下の手順に従ってHRスキーマに対する接
続を作成してください。 作成する接続の詳細は次のとおりです。
Connection Name:
hrconn
UserName: hr
Password: hr
Deploy Password:
checked
Driver: thin
Host Name:
localhost
JDBC Port: 1521
SID: ORCL
Oracle JDeveloperで接続を定義するには、以下の手順に従います。
|
1.
|
「Connections」タブをクリックしま
す。 Connection Navigatorが表示されない場合は、「View」→「Connection
Navigator」を選択します。

|
|
2.
|
「Database」ノードを右クリックし、コンテキスト・メニューから「New
Database Connection」を選択します。

|
| 3. |
データベース接続の作成ウィザードの初期画面が表示されたら、「Next」をクリック
します
ウィザードの手順1で、Connection Nameにhrconnを入力し、「Next」
をクリックします。

|
| 4. |
手順2は、ウィザードのAuthenticationページです。

|
| 5. |
手順3は、ウィザードのConnectionページです。
Host Name、JDBC Port、SIDの
各フィールドに、上記に示した値をそのまま入力します。 「Next」をクリックします。

|
| 6. |
手順4では、入力した設定情報でデータベースとの接続が確立されたかどうかを確認します。 「Test
Connection」ボタンをクリックします。
データベースが使用可能な状態にあり、接続情報が正しい場合は、ステータス・ウィンドウにSuccess!と表示されま
す。

エラーが発生した場合、接続設定を確認してから、「Back」をクリックして必要な変
更を行い、接続を再テストします。 それでも接続できない場合は、データベースに問題があるか、データベースが稼働していない可能性があります。
|
| 7. |
「Finish」をクリックします。 Connection
NavigatorのDatabaseノードの下に、接続が表示されます。
接続とそのノードを開くと、スキーマ内のデータベース・オブジェクトが表示されます。

|
トピック・リストに戻る
Oracle JDeveloper
10gで作業する場合、作業はアプリケーション内のプロジェクトとして整理されます。 Oracle
JDeveloperには、多数の事前定義のテンプレートが用意されており、これらを使用して、さまざまなタイプのアプリケーションを開発するために構成
されたアプリケーションやプロジェクトを作成できます。 これらのテンプレートによって、Oracle
JDeveloperでサポートされている基本的なテクノロジが利用できるようになります。
作業環境を作成するには、アプリケーションのニーズにもっとも適合したテンプレートを選択し、そのアプリケーションに必要な各種テクノロジを追加します。
New
Galleryで使用可能なオプションおよびコンテキスト・メニューから実行可能な操作は、そのアプリケーションで選択したテンプレートによって異なりま
す。
このトピックでは、Web
アプリケーション・テンプレートを使用したアプリケーションやプロジェクトの作成方法について説明します。また、Oracle
JDeveloperのデータベース機能を利用できるように、このテンプレートをカスタマイズします。
| 1. |
Applications Navigatorで「Applications」を右ク
リックし、コンテキスト・メニューから「New Application」を選択します。

|
| 2. |
Create Applicationダイアログで、Application NameをApplication1からDBModelingに
変更します。 新しいApplication Nameを入力すると、それに合わせてDirectory Nameが自動的に変更されます。

|
| 3. |
アプリケーション・テンプレートを選択する前に、Oracle
JDeveloperのデータベース機能を利用できるように同テンプレートをカスタマイズします。 「Manage Templates」
をクリックして、Manage Application Templatesダイアログを開きます。

利用可能なアプリケーション・テンプレートの種類と、それらに関連するテクノロジを確認してください。
|
| 4. |
Web Application [JSP, Struts, ADF BC]ノード
で「Data Model」を選択します。
Available Technologiesリストで「Database」を選択
し、「> 」をクリックして、Selected Technologiesリストに移動します。

「OK」をクリックします。
|
| 5. |
Create Applicationダイアログで、Application TemplateがWeb
Application [JSP, Struts, ADF BC]に設定されていることを確認してください。 「OK」
をクリックします。

|
| 6. |
DBModelingアプリケーションが作成され、Applications
Navigatorにノードとして表示されます。

「Save All」をクリックして、作業内容を保存します。
以降、チュートリアルを進めるに従って、定期的に作業内容を保存してください。
|
トピック・リストに戻る
Oracle
JDeveloperでは、データベース・オブジェクトをオンラインで使用できる(このチュートリアルでは触れていない)だけでなく、データベース・オブ
ジェクトをオフラインでモデル化してから、変更内容をデータベースに反映することもできます。
以下の各トピックでは、空のデータベース・ダイアグラムを作成し、それにHRスキーマ
の2つの表を追加する方法を説明します。
その後、表内のデータに若干の変更を加えます。 また、表内のデータに基づいてビューを作成します。
最後に、変更内容を記述したDDLを含むSQLスクリプトを生成します。
このスクリプトを実行することによって、データベースを更新できます。
トピック・リストに戻る
データベース・
ダイアグラムの作成
| 1. |
Applications Navigatorで「Model」プロジェクトを右ク
リックし、コンテキスト・メニューから「New」を選択します。

New Galleryが表示されます。
|
| 2. |
Categoriesリストで、Database Tierがまだ開いていなければ開
き、「Offline Database Objects」を選択します。 Itemsリストで「Database
Diagram」を選択し、「OK」をクリックします。

|
| 3. |
Create Database Diagramダイアログで、名前をHRDiagramに
変更して、「OK」をクリックします。

新規のデータベース・ダイアグラムが開きます。
|
| 4. |
ダイアグラム領域の右側にComponent Paletteが表示されます。 Component
Paletteには、このダイアグラムで使用できる要素が用意されています。 Component Paletteが表示されていない場合は、「View」
→「Component Palette」を選択してください。

|
トピックに戻る
データベース接
続からの表のインポート
ここまでで空のデータベース・ダイアグラムができました。次に、データベース接続から
ダイアグラム上に表をドラッグしてインポートします。
表をインポートすると、オフラインの表定義が作成されるので、これを用いて作業します。オフラインでの作業が完了したら、DDLを使用して、データベース
内に新規の表を作成したり、既存の表を変更したりできます。
| 1. |
Connection Navigatorを表示するには、「Connections」
タブをクリックするか、「View」→「Connections Navigator」
を選択します。
Database、hrconn、HRの
順にノードを開いて、この接続を介してすべてのデータベース・オブジェクトが利用可能であることを確認します。

|
| 2. |
Tablesノードを開いて「DEPARTMENTS」
を選択し、[Ctrl]キーを押しながら「EMPLOYEES」を選択します。
「DEPARTMENTS」表と「EMPLOYEES」
表をダイアグラム上にドラッグします。

|
| 3. |
Create From Database Objectダイアログで、Offline
Database Objectsが選択されていることを確認して、「OK」をクリックします。

Oracle JDeveloperがデータベースに接続し、選択した表に基づいてオフラインの表定義を作成します。
このとき、若干の遅延が発生することがあります。
オフラインの表と外部キーが作成され、ダイアグラム上に表示されます。
|
| 4. |
ダイアグラム上で、オフラインの表と外部キーを確認します。
ダイアグラム全体を確認するために、必要に応じてスクロールしてください。

|
トピックに戻る
ダイアグラム上
のオブジェクトの編集
Oracle
JDeveloperのモデリング・ツールを使用すると、ダイアグラム上でオフラインの表を直接編集でき(インプレース編集)、または
Propertiesダイアログを使用して編集できます。
表名の変更、新しい列の作成、既存の列の編集、制約の編集といった操作を表に対して実行できます。
以下の手順では、インプレース編集によるチェック制約の変更方法と、Edit
Offline Tableダイアログを使用した列定義の変更方法について説明します。
| 1. |
表ダイアグラムの大きさが適切でなく作業しにくい場合は、ウィンドウの上部にある「Zoom In」
または「Zoom Out」をクリックしてサイズを調整してください。
ダイアグラム化されたEmployees表の3番目の区画で、「<<Check>>
EMP_SALARY_MIN:salary > 0」という名前のチェック制約を選択し、再度クリックして同制約行をダイアグ
ラム内で編集できるようにします。
この行を、EMP_SALARY_MIN:salary
> 10に変更します。

[Enter]キーを押すか、表の外にフォーカスを移すと、変更内容が確定します。
|
| 2. |
次に、インプレース編集とEdit Offline Tableダイアログを使用した編集を比較してみます。
ダイアグラムの「Employees」表をダブルクリックして、Edit
Offline Tableダイアログを開きます。あるいは、ダイアグラムまたはApplication
Navigatorでこの表を右クリックし、コンテキスト・メニューから「Properties」を選択することも可
能です。

|
| 3. |
Edit Offline Tableダイアログで「Column Information」
を選択し、Columnsリストで「EMAIL」を選択します。 Column
Propertiesセクションで、サイズを30に変更して、「OK」をクリック
します。

|
| 4. |
ダイアグラムの表が変更したとおりに更新されていることを確認します。

「Save All」をクリックして作業内容を保存します。
|
トピックに戻る
新規ビューの作成
このトピックでは、社員の姓とその社員が属している部門の名前を組み合わせて、新しい
データベース・ビューを作成します。
| 1. |
Applications Navigatorで「Model」プロジェクトを右ク
リックし、コンテキスト・メニューから「New」を選択します。

|
| 2. |
New Galleryにおいて、CategoriesリストのDatabase Tierを
開き、「Offline Database Objects」を選択します。 Itemsリストで「View」
を選択し、「OK」をクリックします。

|
| 3. |
Create Offline Viewウィザードの初期画面が表示されたら、「Next」
をクリックします。
ウィザードのView Informationページで、NameにEmpDeptを入力して「Next」
をクリックします。

|
| 4. |
ビューを作成するには2つの方法があります。
ここでは、SQL問合せを入力する代わりに、リストからオブジェクトを選択して宣言的にビューを作成します。
ウィザードのChoose View creation methodページで、「Declarative」
を選択して「Next」をクリックします。

|
| 5. |
ウィザードのQuick-pick objectsページで、AvailableリストのEMPLOYEESノー
ドを開き、さらにEMP_DEPT_FKノード、その下のDEPARTMENTSノー
ドを開きます。
EMPLOYEESノードの「LAST_NAME」を選択します。 [Ctrl]キー
を押しながら、EMP_DEPT_FKのサブノードであるDEPARTMENTSノードの下の「DEPARTMENT_NAME」
も選択します。
「 >」をクリックして、それらをSelectedリストに移動します。

「Next」をクリックして、問合せの内容を確認します。「Finish」
をクリックすると、オフライン・ビューが作成されます。
|
| 6. |
Applications Navigatorで「Model」プロジェクトを開き、
さらに「Offline Database Sources」、「HR」の順に開
きます。 「EMPDEPT」ビューを選択して、ダイアグラム上の空き領域にドラッグします。

|
| 7. |
ダイアグラムの表示を確認します。

「Save All」をクリックして作業内容を保存します。
|
変更内容を記述
したDDLの生成
ここまでの手順で、データベース接続から表をインポートする方法、インポートした表の
データを変更する方法、およびインポートした表に基づいて新しいビューを作成する方法を説明しました。
このトピックでは、変更内容を記述したDDLを含むSQLファイルを作成し、このSQLファイルを使用してデータベースを更新します。
Oracle
JDeveloperでは、データベースに対して直接変更を加える、すなわち変更内容をデータベースと一致させることもできます。
| 1. |
ダイアグラムを右クリックして、コンテキスト・メニューから「Generate」→「Data
Definition Language for Diagram」を選択します。 Generate SQL from
Offline Database Objectsウィザードが起動します。
あるいは、Applications Navigatorで表およびビューを選択して、コンテキスト・メニューから「Generate
or Reconcile Objects」を選択しても同様です。

|
| 2. |
Generate SQL from Offline Database
Objectsウィザードの初期画面が開いたら、画面の表示内容を確認して、「Next」をクリックします。
Select Objectsページで、Departments表、Employees表、
およびEmpDeptビューがSelectedリストに存在することを確認して、「Next」
をクリックします。

|
| 3. |
Generate Optionsページで、ALTER Objectsオプションが
選択されていることを確認します。
「Manual Reconcile」を選択して、「Next」
をクリックします。

|
| 4. |
ウィザードのSQL Script Optionsページで、「Generate SQL
Scripts」および「Generate SQL*Plus extensions」を選択しま
す。
SQL File Nameをdbmodeling.sqlに変更して、「Next」
をクリックします。

|
| 5. |
ウィザードのDatabase Optionsページで「Next」をクリックし、
Finishページで「Finish」をクリックします。
Reconcileダイアログが表示されます。 Offline
Databaseリストには、オフライン・データベースから生成した提示変更内容が表示され、Online
Databaseリストにはオンライン・データベースの定義が表示されています。
このダイアログで、提示変更内容の受け入れまたは拒否を行うことができます。 ダイアログが表示されたとき、Offline
Databaseリストでは、すべての変更内容が選択されています。よって、ここで「 >」をクリックして選択
されている変更内容を受け入れるか、「>>」をクリックしてすべての変更内容を受け入れると、それらの変
更内容が作成されるスクリプトに反映されます。
上の手順で行ったのは、EMPLOYEES表に対する2つの変更だけです。1つはEMAIL列に対する変更、もう1つは
EMP_SALARY_MINチェック制約に対する変更です。
Offline Databaseリストで、「EMPLOYEES」ノードを開き、さ
らに「Columns」ノードと「Constraints」ノードを開きます。
EMP_SALARY_MINチェック制約に対する変更は除外し、EMAIL列に対する変更だけを含むスクリプトを作成す
るには、「EMAIL」列だけを選択します。
ここでは、新規のビューに対応するDDLも生成するため、「EMPDEPT」も選択し、「>」
をクリックして選択済みの変更を受け入れ、Online Databaseリストに移動します。

|
| 6. |
「OK」をクリックして、DDLスクリプトを生成します。
スクリプトが作成され、エディタで開かれます。

このチュートリアルでは行いませんが、このスクリプトをSQL*Plusで実行すれば変更内容をデータベースに適用できま
す。
|
トピックに戻る
Oracle JDeveloper
を使用して、オブジェクト・タイプ、パッケージ、プロシージャ、ファンクション、トリガーなど、データベース内のストアドPL/SQLを作成、編集、テス
ト、デバッグできます。
これを行うには、Oracle JDeveloper内にファイルとしてSQLスクリプトを作成し、そのスクリプトをデータベースに対して実行します。
あるいは、データベース内に直接PL/SQLオブジェクトを作成する方法もあります。
以下のトピックでは、社員レコードのレイアウトを定義するオブジェクト・タイプemp_recを作成します。
次に、emp_recによって定義された社員レコード
を返すファンクションget_empを含むパッケージ
を作成します。 最後に問合せを実行して、emp_recに
値を移入するパッケージ本体を作成します。
トピック・リストに戻る
SQLスクリプ
トの実行によるオブジェクト・タイプの作成
| 1. |
SQLスクリプトを作成するには、Applications Navigatorで「Model」
プロジェクトを右クリックし、「New」を選択してNew Galleryを開きます。

|
| 2. |
Categoriesリストで、「Database Tier」を開き、「Database
Files」を選択して、Itemsリストで「SQL File」を選択します。 「OK」
をクリックします。

|
| 3. |
Create SQL Fileダイアログで、File Nameをemp_rec.sql に
変更して、「OK」をクリックします。

コード・エディタ内で新しい空のファイルが開かれます。
|
| 4. |
以下のコードをコピーして、コード・エディタ内に貼り付けます。
REM
REM Create object EMP_REC
REM
CREATE
or REPLACE type EMP_REC as object
(
employee_id number(6),
last_name varchar2(25),
job_id varchar2(10),
manager_id number(6),
hire_date date,
salary number(8,2),
commission_pct number(2,2),
department_id number(4)
);
/
show errors;

「Save All」をクリックして作業内容を保存します。
|
| 5. |
エディタ内でemp_rec.sqlを
右クリックして、「Run in SQL*Plus > hrconn」を選択します。
パスワードを要求されたら、hrと入力します。
このSQLをデータベース内のHRスキーマに対して実行すると、オブジェクト・タイプEMP_RECが作成されます。

注:コンピュータ上で最初にOracle
JDeveloperからSQL*Plusを実行する場合は、SQL*Plus実行可能ファイルの場所を尋ねられます。 「Browse」
をクリックし、sqlplusw.exeの場所を特定
してください。
Oracle SQL*Plusウィンドウが開き、スクリプトが実行されます。 次のメッセージが表示されます。
Type created.
No errors.
「exit」をクリックしてSQL*Plus ウィンドウを閉じます。
|
| 6. |
Connection Navigatorで、「Database」ノードを開きま
す。 「hrconn」接続、「HR」、「Types」
の順に開くと、新しいオブジェクト・タイプであるEMP_RECが
見つかります。

|
PL/SQL
パッケージの直接的な作成
上のトピックでは、最初にスクリプトを作成し、そのスクリプトをデータベースに対して
実行することで、PL/SQLオブジェクトを作成する方法を説明しました。 このトピックでは、
PL/SQLパッケージEMP_FETCHERを直接
作成します。
| 1. |
Connection Navigatorで、Databaseノード、hrconnノー
ド、HRノードの順に開きます。 「Packages」ノードを右クリックし、コ
ンテキスト・メニューから「New PL/SQL Package」を選択します。

|
| 2. |
Create PL/SQL Packageダイアログで、Object NameをEMP_FETCHERに変
更して、「OK」をクリックします。

コード・エディタ内にEMP_FETCHERパッ
ケージが開きます。
|
| 3. |
コード・エディタ内でEMP_FETCHERを
見つけ、既に入力されている2つの行の間に次のコードを入力して、get_empファ
ンクションを作成します。
FUNCTION
get_emp(emp_no IN NUMBER) RETURN emp_rec;

パッケージを保存します。
|
| 4. |
Connection Navigatorで「EMP_FETCHER」パッケージを右ク
リックし、コンテキスト・メニューから「New Package Body」を選択します。

コード・エディタ内にパッケージ本体が開きます。
|
| 5. |
コード・エディタ内でEMP_FETCHERパッ
ケージ本体を見つけ、問合せを実行して社員レコードに値を移入する次のコードを入力します。
package
body EMP_FETCHER as
FUNCTION
get_emp(emp_no IN NUMBER) RETURN emp_rec IS
emp_found
employees%rowtype;
emp_rtn
emp_rec;
BEGIN
SELECT
*
INTO
emp found
FROM
employees
WHERE
employees.employee_id=emp_no;
emp_rtn := emp_rec
(
emp_found.employee_id,
emp_found.last_name,
emp_found.job_id,
emp_found.manager_id,
emp_found.hire_date,
emp_found.salary,
emp_found.commission_pct,
emp_found.department_id
);
RETURN
emp_rtn;
END;
END;

「Save」をクリックして、パッケージ本体をコンパイルします。
|
トピックに戻る
トピック・リストに戻る
PL/SQL
ファンクションのテスト
| 1. |
Connection Navigatorで「EMP_FETCHER」パッケージ本体を右
クリックし、コンテキスト・メニューから「Run」を選択します。

|
| 2. |
Run PL/SQLダイアログで、次の変更を行い、社員番号200番の社員の姓だけが表示されるようにします。
 |
EMP_NO := NULL;
という行を
EMP_NO := 200;に変更する
|
 |
--DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
という行のコメントを外し、
DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return.last_name);
に変更する |

|
| 3. |
「OK」をクリックします。 ログ・ウィンドウに、EMP_FETCHERパッケージのget_emp()ファンクションの出力が表示されます。

|
トピックに戻る
トピック・リストに戻る
このチュートリアルでは、Oracle
JDeveloperのデータベース機能を使用しました。
具体的には、データベース・ダイアグラム上でデータベース表をオフラインでモデル化し、新規オフライン・ビューを作成しました。
次に、それらの変更内容をデータベースに反映するSQLスクリプトを作成しました。
また、SQLスクリプトを実行してデータベース内にオブジェクト・タイプを作成し、さらに、PL/SQLパッケージをデータベース内に直接作成して、
Oracle JDeveloper内でそれらをテストしました。
このチュートリアルで学習した内容は、以下のとおりです。
 |
データベース・ダイアグラム内でオフラインのデータベース表をモデル化する |
 |
データ
ベース・ダイアグラムを使用してデータベース内のデータを更新する |
 |
データ
ベース内にPL/SQLオブジェクトを作成する |
トピック・リストに戻る
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。
|