0) { obj.className = "imgborder_on"; } } } function hideImage(obj) { if (obj.className.substr(0, 10) == "imgborder_") { obj.src = eyeglass.src; obj.className = "imgborder_off"; } } function showAllImages() { imgs = document.images; for (i=0; i < imgs.length; i++) { showImage(imgs[i]); } } function hideAllImages() { imgs = document.images; for (i=0; i < imgs.length; i++) { hideImage(imgs[i]); } } //-->
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で実行すれば変更内容をデータベースに適用できま す。
|
トピックに戻る
データベース内の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内でそれらをテストしました。
このチュートリアルで学習した内容は、以下のとおりです。
| データベース・ダイアグラム内でオフラインのデータベース表をモデル化する
|
|
データ ベース・ダイアグラムを使用してデータベース内のデータを更新する
|
|
データ ベース内にPL/SQLオブジェクトを作成する
|
トピック・リストに戻る
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。
|