3
Form Builder
その他の新機能
その他の新機能
その他の新機能
その他の新機能
3-2
CONTENTS
• PL/SQL8サポート
サポート
サポート
サポート
• 項目の色、フォントの直接設定
項目の色、フォントの直接設定
項目の色、フォントの直接設定
項目の色、フォントの直接設定
• 階層ツリー・コントロール
階層ツリー・コントロール
階層ツリー・コントロール
階層ツリー・コントロール
• 戻り値を含む
戻り値を含む
戻り値を含むDML実行時の動作
戻り値を含む
実行時の動作
実行時の動作
実行時の動作
• Formsでのパスワード管理
でのパスワード管理
でのパスワード管理
でのパスワード管理
ここでは、2章で触れなかったForm Builderのその他の新機能に付いて紹介します。3-3
PL/SQL8サポート
サポート
サポート
サポート
• ストアド・プログラム単位
ストアド・プログラム単位
ストアド・プログラム単位
ストアド・プログラム単位
–
新しい
新しいPL/SQL8 機能を使用可能
新しい
新しい
機能を使用可能
機能を使用可能
機能を使用可能
• クライアント側プログラム単位
クライアント側プログラム単位
クライアント側プログラム単位
クライアント側プログラム単位
–
Oracle8オブジェクト機能
オブジェクト機能
オブジェクト機能 未サポート
オブジェクト機能
未サポート
未サポート
未サポート
PL/SQL8サポートサポートサポートサポート Oracle Developer R6.0はクライアントおよびサーバでPL/SQL8を使用します。しかし今回のリリース では、クライアント側プログラム単位ではOracle8オブジェクト関連機能を使用出来ません。ただしストアド・プログラム単位エディタでは、Oracle Developer R6.0ではOracle8ユーザ定義データ 型の本体(メソッド)および仕様(属性)の編集が可能なよう、拡張されています。 以前のリリースとの互換 以前のリリースとの互換以前のリリースとの互換 以前のリリースとの互換 以前のリリースを用いて作成されたクライアント側プログラム単位は、PL/SQL8エンジンと互換性を 持たない場合があります。この場合PL/SQL8エンジンで実行は出来ますが、コンパイル・エラーが発 生します。PL/SQL8では互換性フラグを使うことによってPL/SQL2との互換性モードを選択できるた め、サーバーでPL/SQL2コードをコンパイルする際このようなエラーは発生しません。互換性フラグ に関しては『Oracle8 Server 移行ガイド』の第6章をご覧ください。
3-4
サポート外の
サポート外の
サポート外の
サポート外の
クライアント側
クライアント側
クライアント側
クライアント側PL/SQL8機能
機能
機能
機能
• オブジェクト型
オブジェクト型
オブジェクト型
オブジェクト型
• コレクション型(ネストした表と
コレクション型(ネストした表と
コレクション型(ネストした表と
コレクション型(ネストした表とVARRAY))))
• オブジェクト値を返すストアド・プロシージャ
オブジェクト値を返すストアド・プロシージャ
オブジェクト値を返すストアド・プロシージャ
オブジェクト値を返すストアド・プロシージャ
• NCHAR、
、
、NVARCHAR2型
、
型
型
型
サポートしないクライアント側 サポートしないクライアント側サポートしないクライアント側 サポートしないクライアント側PL/SQL8機能機能機能機能 以下の機能は、サーバ側PL/SQL8ではサポートしますが、今回のリリースでは、クライアント 側PL/SQL8ではサポートしません。 •オブジェクト型 • コレクション型(ネストした表・VARRAY) • オブジェクト値を返すストアド・プロシージャ •NCHAR、NVARCHAR2型 これらの機能はサーバ側PL/SQL8でサポートするので、ストアド(サーバ側)サブプログラムを 書き、Oracle Developerからサブプログラムを呼び出せばこれらの機能を使用できます。ただし 上記の制限のために、オブジェクト型はクライアント側に渡す前に分解する必要があります。3-5
色、フォントの直接設定
色、フォントの直接設定
色、フォントの直接設定
色、フォントの直接設定
• 項目の色、フォント、フォントの太さ等を
項目の色、フォント、フォントの太さ等を
項目の色、フォント、フォントの太さ等を
項目の色、フォント、フォントの太さ等を
SET_ITEM_PROPERTYで直接設定。
で直接設定。
で直接設定。
で直接設定。
→
→
→
→ 今までは可視属性を作成し、設定
今までは可視属性を作成し、設定
今までは可視属性を作成し、設定
今までは可視属性を作成し、設定
• SET_CAVAS_PROPERTY、
、
、
、
SET_WINDOW_PROPERTYでも指定可
でも指定可
でも指定可
でも指定可
項目色、フォント、フォントの太さ等をアプリケーション内で変更する際、以前のバージョンでは可 視属性を作成して指定する、という方法を用いていました。この方法ではアプリケーション内で使 用する色、フォント、太さを組合せた可視属性をすべて作成しておかなければなりません。 R6.0では SET_ITEM_PROPERTY ビルトインを用いてこれらのプロパティを直接設定することが 可能です。新規に色、フォント等を設定するためのプロパティが追加されています。 また、SET_CANVAS_PROPERTY、SET_WINDOW_PROPERTYでもこれらのプロパティを指定 出来るので、より柔軟にUIを変更出来ます。 注 注 注 注1::::フォントサイズを指定する場合は、「実際のサイズ × 100(サイズ8の場合800)」で指定しま す。 注 注 注 注2::::色を指定する際は「RED」「BLACK」等の色の名前ではなく、「R0G100B100」のように、 RGBで指定します。 注 注 注 注3::::色の指定は99年5月18日現在、動作しません。3-6
階層ツリー・コントロール
階層ツリー・コントロール
階層ツリー・コントロール
階層ツリー・コントロール
• データをナビゲータ形式で表示
データをナビゲータ形式で表示
データをナビゲータ形式で表示
データをナビゲータ形式で表示
EMP表の階層表示
表の階層表示
表の階層表示
表の階層表示
階層ツリーの作成 階層ツリーの作成階層ツリーの作成 階層ツリーの作成 階層ツリーはOracle Developer R6.0の新しいオブジェクトです。階層ツリーを用いると、データをオ ブジェクト・ナビゲータのようなナビゲータ形式で表示する事が可能になります。この階層ツリー要 素として使用可能な値は、問合せたデータ、レコード・グループです。階層ツリーの値を操作する ビルトイン・サブプログラムも合わせて追加されていますので、アプリケーション内で動的にツリー 要素の変更、追加、削除を行うことが出来ます。 階層ツリー項目を作成する際は、以下のどちらかを行います。 1.レイアウト・エディタで ①「階層ツリー」アイコン をクリック ②キャンバス上でマウスをクリック・アンド・ドラッグし、階層ツリー・オブジェクトを作成 ③必要に応じて階層ツリー関連プロパティを設定 2.オブジェクト・ナビゲータで ①作成ボタン使って新しい項目を作成 ②項目のプロパティ・パレットをオープンし、「項目タイプ」プロパティを「階層ツリー」に設定 ③必要に応じて他の階層ツリー関連プロパティを設定3-7
階層ツリー・プロパティ、
階層ツリー・プロパティ、
階層ツリー・プロパティ、
階層ツリー・プロパティ、
組込み関数、トリガ
組込み関数、トリガ
組込み関数、トリガ
組込み関数、トリガ
• プロパティ
プロパティ
プロパティ
プロパティ
• ビルトイン・サブプログラム
ビルトイン・サブプログラム
ビルトイン・サブプログラム
ビルトイン・サブプログラム
• トリガー
トリガー
トリガー
トリガー
SELECT Initial State, Level, Node Label, Icon Name, Node Value
FROM Table
START WITH mgr IS NULL CONNECT BY PRIOR empno=mgr SELECT 1, Level,
ename, NULL, empno
FROM emp
START WITH mgr IS NULL CONNECT BY PRIOR empno=mgr
階層ツリー特有のプロパティ 階層ツリー特有のプロパティ階層ツリー特有のプロパティ 階層ツリー特有のプロパティ 階層ツリー用のプロパティとして、以下の7つが設定出来ます。 -項目タイプ :階層ツリーに設定 -空のブランチを許可 :子を持たないブランチ・ノードの存在を許可するか -複数選択 :一度に複数の項目を選択出来るようにするか -線を表示 :各ノードをつなぐ線を表示するか -記号を表示 :各ブランチ・ノードの前に+/-記号を表示するか -レコード・グループ :ツリー要素が格納されるレコード・グループ -データ問合せ :ツリー項目のデータロードを行うSQL問合せ 階層ツリー特有のビルトイン関数 階層ツリー特有のビルトイン関数階層ツリー特有のビルトイン関数 階層ツリー特有のビルトイン関数 ツリー要素の追加、削除等、階層ツリーを操作する新規ビルトインが追加されました。これらは FTREEビルトイン・パッケージに格納されています。
3-8
DMLの戻り値
の戻り値
の戻り値
の戻り値
•
挿入および更新用の新しい
挿入および更新用の新しいDML機能
挿入および更新用の新しい
挿入および更新用の新しい
機能
機能
機能
•
2回目のデータベース問合せを不要にする
回目のデータベース問合せを不要にする
回目のデータベース問合せを不要にする
回目のデータベース問合せを不要にする
•
処理速度の向上
処理速度の向上
処理速度の向上
処理速度の向上
•
「「
「DML戻り値」プロパティによる制御
「
戻り値」プロパティによる制御
戻り値」プロパティによる制御
戻り値」プロパティによる制御
挿入値または更新値を返す 挿入値または更新値を返す挿入値または更新値を返す 挿入値または更新値を返すOracle8構文のインプリメント構文のインプリメント構文のインプリメント構文のインプリメント Forms アプリケーションでデータの挿入・更新を行う際に、新しいDML機能を使用することが出 来ます。データの挿入・更新時に、データベース側のトリガー(Before Insertトリガー等)で値が変 更される場合があります。このような場合に、再度アプリケーション側から問合せすることなく自動 的に新しい値を取得することが可能になりました。 この動作の設定は、ブロックの新しいプロパティ「DMLの戻り値」で指定します。この値が「はい」 に設定されている場合、Forms はDML Returning句を用いてアプリケーションに自動的に変更を 反映します。 「いいえ」と設定されている場合は、以前のバージョンと同じように再度問合せを行わない限り変 更をアプリケーションに反映しません。よってユーザが、サーバ側では値の変更されているデータ をそのまま更新しようとすると、再度問合せを実行するよう促すエラーが発生します。 この「いいえ」は以前のバージョンとの互換性を保つために設置されています。 注 注注 注1::::この機能はデータベース・サーバがOracle8の場合のみ使用出来ます。それ以外のサーバを 使用する場合、このプロパティは無視されます。 注 注注 注2::::R6.0では、DELETE文に対しては動作しません。以下に、DML戻り値プロパティの動作を確認する例を示します。 ① Oracle8データベース上に下記スクリプトを流し、表、データ、及び表の更新時に起動する「 before update」トリガーを作成します。 ②作成した表(emp_tab2)を基にしたブロックを、Form Builderで作成します。 ③ブロックの「DML戻り値」プロパティを「はい」に設定し、実行します。 ④Runtime上で1行目の値を変更し、保存します。 ⑤データベース上のトリガーが働き、今変更した行のデータが自動的に更新されたことを確認し て下さい。 ⑥今度は「DML戻り値」プロパティを「いいえ」に設定し、実行、更新してみて下さい。 ⑦データはユーザが入力したままの状態です。 ⑧今更新したデータを再び更新します。 ⑨検索を促すエラーが発生しました。
drop table emp_tab2 /
drop type emp_type2 /
/* emp_type2 ユーザ定義型作成 */ create type emp_type2 as object ( empno number(4), ename varchar2(10), job char(9), salary number(7,2), comm number(7,2), hiredate date ); / /* emp_tab2 オブジェクト表を作成 */ create table emp_tab2 of emp_type2; /
/* データ2件挿入 */
insert into emp_tab2 (empno,ename,job,salary,comm,hiredate) values (10,'John','job1',200,10,'98-10-20');
insert into emp_tab2 (empno,ename,job,salary,comm,hiredate) values (20,'Bill','job2',300,20,'98-11-20');
3-10
パスワード管理
パスワード管理
パスワード管理
パスワード管理
期限切れのパスワードを、
期限切れのパスワードを、
期限切れのパスワードを、
期限切れのパスワードを、Forms上で変更
上で変更
上で変更
上で変更
パスワードの管理 パスワードの管理パスワードの管理 パスワードの管理 Oracle8にはデータベース管理者が使用出来る、パスワードの失効機能が用意されています。 これはユーザに一定の基準でパスワードの更新を促すためのものです。 Oracle Developerの以前のバージョンでは、パスワードが期限切れになったユーザで接続を行 おうとした場合「ORA-28001:the password has expired」というエラーメッセージが表示され、その ユーザでは接続する事が出来ませんでした。R6.0ではパスワードが期限切れになったユーザで Form Builder、Forms Runtimeからの接続を 行う際、パスワード変更を促すダイアログが表示されますので、Formsアプリケーション上でパ スワード変更を行う事が出来ます。 パスワード変更時にはデータベース上に設定してあるパスワード認証ルーチンが働きますの で、文字数制限、使用文字制限等を反映させた変更がForms上で正しく行われます。 注 注注 注1:::: R6.0では、このパスワード管理機能は Formsのみで提供されています。Reports、Graphics 等、Forms以外のコンポーネントではご使用頂けません。 注 注注 注2::::不具合により、現在この機能を用いてパスワードを変更する事は出来ません。 例)パスワード有効期限の切れたユーザのパスワードを、 例)パスワード有効期限の切れたユーザのパスワードを、例)パスワード有効期限の切れたユーザのパスワードを、 例)パスワード有効期限の切れたユーザのパスワードを、Formsから変更します。から変更します。から変更します。から変更します。 ① SQL*Plus等を用い、Systemまたは同等のユーザでデータベースに接続します。 ② 以下のように入力します。なおusernameには、パスワードを期限切れにしたいユーザ名を入 力します。
3-11
実行時の診断
実行時の診断
実行時の診断
実行時の診断
• 実行時
実行時
実行時 の情報収集を行う
実行時
の情報収集を行う
の情報収集を行う
の情報収集を行う
• デバッグに効果的
デバッグに効果的
デバッグに効果的
デバッグに効果的
Forms Runtime診断診断診断診断Forms Runtime診断とは、Forms Runtimeのログを取るシステムを言います。この機能を使用して
アプリケーションを実行すると、Formsで行われた処理がログファイルに書き込まれます。 収集出来るのは以下の情報です。 ・実行時に使用されたコンポーネント名及びバージョン ・オープンされたファイル ・メッセージ ・項目の状態 ・実行されたビルトイン、トリガー ・実行時の外部ユーザ・イベント ・未処理の例外 診断の開始 診断の開始
3-12