Oracle JDeveloperを使用したデータベース開発

このチュートリアルでは、Oracle JDeveloperを使用してオフラインでデータベース開発を実行する方法を示します。 既存のデータベース表のモデル化、オフラインでの新規のビューの作成、変更内容のデータベースへの反映について学習します。 また、データベース内のPL/SQLオブジェクトを作成しテストする方法についても学習します。

約20分

トピック

このチュートリアルでは、以下のトピックについて説明します。

データベース接続の作成

モデル・プロジェクトの作成

オフライン・データベース・オブジェクトのモ デル化
データベース内のPL/SQLオブジェクトの 作成

このアイコンの上にカーソルを置くと、すべてのスクリー ンショットがロードし、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)

注:各手順に関連したスクリーンショットのみを表示する場合は、それぞ れの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

概要

このチュートリアルでは、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ページです。

UsernameおよびPasswordフィー ルドに、上述のUsernameとPasswordを入力します。
Deploy Password」チェック・ボックスをチェック します。

Next」をクリックします。

5.

手順3は、ウィザードのConnectionページです。

Host NameJDBC PortSIDの 各フィールドに、上記に示した値をそのまま入力します。 「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」 を選択します。

DatabasehrconnHRの 順にノードを開いて、この接続を介してすべてのデータベース・オブジェクトが利用可能であることを確認します。

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で実行すれば変更内容をデータベースに適用できま す。

トピックに戻る

データベース内のPL/SQLオブジェクトの作成

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内でそれらをテストしました。

このチュートリアルで学習した内容は、以下のとおりです。

トピック・リストに戻る

このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。


Copyright (c) Oracle Corporation 2007 All Rights Reserved
Oracle Corporation発行の「Database Development with JDeveloper」の翻訳版です。

この文書はあくまで参考資料であり、掲載されている情報は予告なしに変更されるこ とがあります。 万一、誤植などにお気づきの場合 は、オラクル社までお知らせください。 オラクル社は本書の内容に関してい かなる保証もしません。 また、本書の内容に関連したいかな る損害についても責任を負いかねます。

Oracleはオラクル社の登録商 標です。
その他の会社名およ び製品名は、 あくまでその製品および会社を識別 する目的にのみ使用されており、 それぞれの所有者の商標または登録 商標です。