Oracle Reports レポート作成ガイド 10gリリース2(10.1.2) B25068-01 |
|
この章では、Oracle Reportsの上級者を対象に概要を説明します。この章の各項は、Oracle Reportsオンライン・ヘルプの「拡張概念」の項にも含まれています(第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」を参照)。
トピックは次の各項に分類されています。
この項のトピックは、第1.2項「レポート」で説明した基本的な概念に基づいています。
次のいずれかの方法で、レポートにタイトルを追加できます。
レポート・ウィザードを使用してタイトルを追加するときに、レポート出力用のテンプレートを選択しない場合は、Reports Builderに定義されているデフォルト属性を使用して、タイトルがレポートのマージンに挿入されます。これらの属性は、ペーパー・レイアウト・ビューで変更できます。
レポート・ウィザードを使用してタイトルを追加するときに、レポート出力用の事前定義テンプレートまたはユーザー定義テンプレート・ファイルを選択する場合は、選択したテンプレートに定義されているB_OR$REPORT_TITLE
という名前のボイラープレート・テキスト・オブジェクトが検索されます。
B_OR$REPORT_TITLE
がある場合は、レポート・ウィザードで入力したタイトルのテキストが、このオブジェクトの属性を使用して表示されます。
B_OR$REPORT_TITLE
が見つからない場合、タイトルは、選択したテンプレートの「デフォルト」プロパティ(プロパティ・インスペクタの「タイトル」ノードの下)に定義されている属性を使用して表示されます。レポート・ブロック・ウィザードを使用して作成したレイアウトでは、タイトルはレポートのマージンに挿入されずに、グループ・タイトルとして新しいレイアウトに挿入されます。この場合、選択したテンプレートの「デフォルト」プロパティ(プロパティ・インスペクタの「タイトル」ノードの下)に従って属性が設定され、B_OR$REPORT_TITLE
は無視されます。テンプレートを選択しない場合は、Reports Builderに定義されているデフォルト属性がタイトルに使用されます。
第3.12.5項「テンプレートのレポート・タイトルのフォーマット」
レポートをセクション分割することで、1つのレポートに複数のレイアウトを定義でき、対象読者ごとにレイアウトを割り当てたり、異なる出力フォーマット、ページ・レイアウト、ページ・サイズ、方向などを指定したりできます。レポート・セクションは3つまで定義でき、各セクションには本体用の領域とマージン用の領域があります。これらのセクションを、ヘッダー、メイン、トレーラと呼びます。デフォルトでは、レポートはメイン・セクションに定義されます。他のセクションには、複数のレポートを別々に作成しなくても、異なるレイアウトを定義できます。必要に応じて、ヘッダー・セクションとトレーラ・セクションのマージンと本体を使用して、レポートにヘッダー・ページとトレーラ・ページを作成することもできます。
オブジェクト・ナビゲータでは、レポートの各セクションは「ペーパー・レイアウト」ノードの下に、「ヘッダー・セクション」、「メイン・セクション」および「トレーラ・セクション」として表示されます。
レポートの3つのセクション(ヘッダー、メイン、トレーラ)のフォーマット順序は、SRW.SET_FORMAT_ORDERまたは「セクションのフォーマット順序」プロパティを使用して指定できます。この機能により、Oracle Reportsでは、任意のセクションを最初にフォーマットし、フォーマット時にのみ認識される情報(ページ番号など)を作成して、その情報を別のセクションのフォーマットに使用できます。たとえば、このプロパティを使用して目次を作成できます。この目的でのSRW.SET_FORMAT_ORDERの使用例は、第35章「単純な目次と索引を使用したペーパー・レポートの作成」および第36章「複数階層の目次を使用したペーパー・レポートの作成」を参照してください。
セクションレベルの配布の使用例は、第37章「レポートの一括処理と配布」を参照してください。この章では、「繰返し」プロパティおよびサンプルの配布XMLファイルを使用して、1つのセクションに複数の配布先を定義する方法について説明します。高度なセクション・レベルの配布と、独自の配布XMLファイル作成の詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』マニュアルの「拡張配布の作成」の章を参照してください。
セクション分割と配布を使用することで、レポート出力をHTMLで公開したり、Postscriptバージョンでプリンタに送信したりできます。
シニア・マネージャにはレポートの集計サマリーを送信し、個々のマネージャには詳細な分析を電子メールで送信できます。この例では、2つのレポート・セクションを持つレポートを1つ作成する必要があります。1つは縦長のサマリー・セクションで、もう1つは横長の詳細セクションにします。「繰返し」プロパティを使用して、マネージャをリストするデータ・モデル・グループに詳細セクションを関連付け、次にデータ・モデル・グループの各インスタンスの宛先を変更することで、適切なマネージャに出力を送信します。
第3.10.2項「セクションのデフォルト・レイアウトの作成」
レポートの定義には、インチ、センチメートルまたはポイントを使用できます。サイズの単位は、レポートを作成するデバイスに依存しません。つまり、Reports Builderを実行する任意のプラットフォームで動作するレポートを設計できます。レポートのサイズの単位は、次の方法で変更できます。
レポート・ページには、長さと幅を任意に設定できます。プリンタ・ページがペーパー・レポートのページよりも小さいまたは大きい可能性があるため、物理ページと論理ページという概念が使用されます。物理ページのサイズは、プリンタで出力される1ページ分です。論理ページとはレポートの1ページのサイズで、1つの論理ページは複数の物理ページから構成されることがあります。
レポートの各セクション(ヘッダー、メイン、トレーラ)で、次のように指定します。
この例では、1つの論理ページが6つの物理ページから構成されています。この論理ページには、横方向に3つの物理ページが、高さ方向に2つの物理ページがあります。したがって、「ページ当りの水平パネル」のサイズは3に、「ページ当りの垂直パネル」のサイズは2になります。論理ページの横方向に2つの物理ページ、高さ方向に3つの物理ページを構成する場合は、「ページ当りの水平パネル」のサイズに2を、「ページ当りの垂直パネル」のサイズに3を指定します。
フォントの構成ファイル、フォントの別名の作成、フォントに関するトラブルシューティング、フォント・タイプなど、Oracle Reportsでのフォントの使用方法および追加方法の詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』の「Oracle Reportsのフォント」の章を参照してください。このマニュアルは、Oracle Technology NetworkのOracle Reportsドキュメントのページ(http://www.oracle.com/technology/documentation/reports.html)から入手できます。
「条件付き書式」ダイアログ・ボックスおよび「書式の例外」ダイアログ・ボックスを使用すると、既存の条件に基づいて選択されるレイアウト・オブジェクトに対して、出力書式属性(フォント、カラーなど)を指定できます。定義する条件を、書式の例外と呼びます。
「条件付き書式」ダイアログ・ボックスは、次のいずれかの方法で、ペーパー・レイアウト・ビューまたはペーパー・デザイン・ビューから表示できます。
「書式の例外」ダイアログ・ボックスは、「条件付き書式」ダイアログ・ボックスで「新規」または「編集」をクリックすると表示され、定義済の条件に基づいて選択されるレイアウト・オブジェクトに対して、出力書式属性を迅速かつ簡単に指定できます。「書式の例外」ダイアログ・ボックスで現行のレイアウト・オブジェクトに条件と書式を指定したら、その定義のすべてがPL/SQLフォーマット・トリガーにエクスポートされます。レイアウト・オブジェクトにフォーマット・トリガーがすでにある場合は、Reports Builderのプロンプトで確認してから、「書式の例外」ダイアログ・ボックスの定義で既存のトリガー・コードが上書きされます。
フォーマット・トリガーはPL/SQLエディタで手動編集できますが、その後に「書式の例外」ダイアログ・ボックスを使用して変更する場合は、Reports Builderによって、既存のフォーマット・トリガーに上書きするかどうかを確認するプロンプトが表示されます。
第3.9.1.5項「条件付き書式のレイアウト・オブジェクトへの適用」
ネストしたマトリックス・レポートとは、マトリックス・グリッド内に少なくとも1つの親子リレーションシップが表示されるマトリックス・レポートのことです。
ネストしたマトリックス・レポートには3つ以上のディメンションがあるため、複数のディメンションがページの水平方向または垂直方向に配置されます。たとえば、次のレポートのサンプルを見てください(図2-2)。年ごとに、関連部門の一覧がネストして表示されます。また、職種の一覧は(水平方向の値として)一度だけ表示されます。職種の値は一度だけ表示されるため、職種の項目ごとにサマリーを作成し、サマリー結果の値を1行で表示できます。
詳細な例は、第26章「ネストしたマトリックス・レポートの作成」を参照してください。
グループ別マトリックス・レポートとは、マスター・グループの値ごとに異なるマトリックスを持つグループ上レポートのことです。たとえば、次のレポートの各年(マスター)には、その年の部門と職種のみを含む一意のマトリックスがあります。つまり、マトリックス内の各職種項目の位置が各年で異なる場合があるため、各職種項目のサマリーはサマリー結果の値で1行に表示できません。
複数の問合せを使用したグループ別マトリックス・レポートは、3つ以上のディメンションを持つという点で、ネストしたマトリックス・レポートに似ています。たとえば、次のレポートでは、年ごとに、関連部門の一覧がネストして表示されます。
複数の問合せを使用する利点は、ネストしているグループに対して、実際のブレークまたはマスター/ディテール・リレーションを取得できることです(たとえば、前述の複数の問合せの例では、Year 80にレコード20のみが表示されます。1つの問合せでは、Year 80に該当するデータがあるかどうかに関係なく、すべてのレコードがYear 80に対して表示されます)。特定のマスター・レコードに対して、データを持たないディテール・レコードを非表示にする場合は、複数の問合せを使用する必要があります。
詳細な例は、第27章「グループ上マトリックス・レポートの作成」のサンプル・レポートを参照してください。
この項のトピックは、第1.2.2項「Webレポートについて」で説明した基本的な概念に基づいています。
JavaServer Pages(JSP)テクノロジは、Sun社のJavaサーブレット・テクノロジの拡張機能で、Webページ上に動的コンテンツを表示するための簡単なプログラミング手段を提供します。JSPは、Webまたはアプリケーション・サーバーで実行される埋込みのJavaソース・コードを持つHTMLページです。HTMLはWebブラウザに表示されるページ・レイアウトを提供し、Javaはビジネス・ロジックを提供します。
JSPでは、静的なページの表示と動的なコンテンツの生成が分離されています。JSPでは、動的なアプリケーション・ロジックが静的なHTMLコンテンツから完全に切り離されているため、Javaプログラミングの経験があまりないWebページ・デザイナや経験のないWebページ・デザイナでも、単純にHTMLタグまたはXMLタグを使用して、コンテンツの生成に影響を与えることなくJSPページの外観を変更し、動的に生成されるWebページを設計およびフォーマットできます。JSP固有のタグまたはJavaベースのスクリプレットは、Webページに動的なコンテンツを生成するコンポーネントをコールするために使用します。
JSPには.jsp
拡張子があります。この拡張子によって、Web Serverに、ページの処理にJSPコンテナが必要なことが通知されます。JSPコンテナはJSPタグとスクリプレットを解析し、JSPをJavaサーブレットにコンパイルして実行します。それにより、必要なコンテンツが生成され、その結果がHTMLページまたはXMLページとしてブラウザに返信されます。
JSPは、一般的にインターネットまたは企業のイントラネット経由で、ブラウザベースのクライアントからアクセスおよび実行できます。JSPアプリケーションは、従来のクライアント/サーバー・アプリケーションと次の点で異なります。
JSPが初めてコールされるときは、Javaサーブレット・クラスにコンパイルされ、Web Serverのメモリーに格納されます。JSPはメモリーに格納されるため、同じページへのコールは2回目以降速くなり、その結果、HTTPリクエストごとに新しいプロセスを起動するという、従来のCommon Gateway Interface(CGI)プログラムで見られたパフォーマンス上の制限が回避されます。
JSPテクノロジに関する他の一般的な情報は、Sun社のJavaおよびJ2EEに関するWebサイト(http://java.sun.com)を参照してください。
Oracle Reportsでは、Reports Builderを使用して取得する情報でWebページを拡張できるように、基盤テクノロジとしてJavaServer Pages(JSP)がサポートされます。
Oracle Reportsでは、データ・モデルを使用して取得したデータをJSPにより既存のWebページに埋め込み、JSPベースのWebレポートを作成します。JSPレポートは新規作成することも、既存のレポートをJSPレポートとして保存することもできます。新しく作成するレポートは、デフォルトでJSPレポートとして保存されます。レポートをJSPとして保存する場合の利点は、JSPがテキスト・ファイルのため、バイナリの.rdf
フォーマットなどに比べて簡単に編集できる点です。レポートをJSPファイルとして保存すると、そのデータ・モデルがXMLタグを使用して埋め込まれます。現在、レポート全体をXMLタグを使用して定義することも、XMLファイルとして保存することもできます。
Oracle ReportsのカスタムJSPタグを使用すると、既存のJSPファイルにレポート・ブロックやグラフを簡単に追加できます。これらのタグをテンプレートとして使用すれば、JSPベースのWebレポートに、独自のデータドリブンJavaコンポーネントを構築して挿入できます。JSPでは、レポート・ブロックをカプセル化しているHTMLまたはXMLコードの編集に加えて、本体と属性を変更、追加または削除することで、JSP自体でレポート・ブロックを編集することもできます。
レポート・エディタのWebソース・ビューには、HTMLタグ、XMLタグおよびJSPタグを含むWebレポートのソース・コードが表示されます。
デフォルトで、Reports Builderで作成した新規のJSPの内容は次のとおりです。<%@ page contentType="text/html;charset=ISO-8859-1" %>
JSPをReports Builder以外で作成する場合は、必ず同様のエンコーディング情報を含める必要があります。
以前のリリースで、Oracle Reportsではペーパーベースのレポートに追加できるWebリンクが導入されました。このリンクは、ペーパー・レポートをWebブラウザまたはPDFビューアで表示するときにアクティブになります。JSPレポートでは、ハイパーリンクを手動で作成する必要があります。また、ハイパーリンクでデータ値を代入する必要がある場合は、データ値をrw:field
というJSPタグで指定する必要があります。たとえば、次のように指定します。
<a href="http://server/path/rwservlet?report=department.jsp&p_deptno=<rw:field
id="F_Deptno" src="Deptno"/>"> <rw:field id="F_Deptno" src="Deptno">10</rw:field> </a>
JSPベースのWebレポートの文字コード(EUC-JPなど)が、NLS_LANG環境変数のキャラクタ・セット部分(JA16SJISなど)と異なる場合、次のエラーが表示されます。
REP-6106
またはREP-6104
(javax.servlet.jsp.JspException (multibyte)
)REP-0495 Unable to tokenize the query (singlebyte)
REP-0069 Internal ErrorまたはREP-6106
この問題に対処するには、JSPベースのWebレポートの文字コードが、Reports BuilderのNLS_LANG
環境変数のキャラクタ・セット部分に対応するIANAエンコーディングに一致することを確認する必要があります。
次に例を示します。
<%@ page contentType="text/html;charset=EUC-JP" %>
<META http-equiv="Content-Type"
content="text/html;charset=EUC-JP">
このJSPファイルはキャラクタ・セット(EUC-JP
)でエンコードする必要があります。
NLS_LANG=JAPANESE_JAPAN.JA16EUC
この例では、JSPベースのWebレポートのエンコーディング(EUC-JP
)が、Reports BuilderのNLS_LANG
のキャラクタ・セット部分、つまりJA16EUC
と一致しています。
Oracle Reportsでは、Webレポートのテンプレートはデフォルトで西欧文字コード用に構成されています。他の言語に関しては、<Meta>
タグのcharset
属性と<%@page%>
ページ・ディレクティブの両方を使用して、すべてのJSPファイルに文字コードを指定できます。
適切な文字コードをJSPファイルに動的に関連付けるには、次の変更を行います。
rw*.html
ファイルおよびblank_template.jsp
ファイルを次のように編集します。
template.xsl
(ORACLE_HOME
/reports/templates/
)ファイルを次のように編集します。
<xsl:output>
タグを次のように変更します。<xsl:output
method="jsp"
indent="yes"
encoding="yourIANAencoding
"
/>
前述のディレクティブ中にある変数の意味は次のとおりです。
yourIANAencoding
は、NLS_LANG
変数のNLS_CHARACTERSET
部分に対応するIANAエンコーディング名です。
<%@ page contentType="text/html;charset=yourIANAencoding" %>
<META>
タグを追加または変更します。<meta http-equiv="Content-Type" content="text/html;charset=yourIANAencoding" />
前述のディレクティブ中にある変数の意味は次のとおりです。
yourIANAencoding
は、NLS_LANG
変数のNLS_CHARACTERSET
部分に対応するIANAエンコーディング名です。
Oracle Reportsオンライン・ヘルプの「リファレンス」の項のトピック「Oracle ReportsのJSPタグ」および「Oracle Reports XMLタグ」
JSPベースのWebレポートをプレビューするには、ツールバーの「Webレイアウトを実行」ボタンをクリックするか、「プログラム」→「Webレイアウトを実行」を選択してWebソースを実行します。Reports Builderによって、Webレポートがデフォルトのブラウザに表示されます。
この機能を使用するために、Reports Serverを構成する必要はありません。Reports Builderには、埋込みのOracle Container for Java(OC4J)サーバーが用意されています。Reports Builderの各インスタンスはそれぞれ専用のOC4Jサーバーを持ち、一意なポートをリスニングしています。そのため、同時に複数のReports Builderセッションが可能になります。ポートを指定しない場合、Reports Builderではデフォルトの範囲にある空のポートが自動的に検索されます。OC4Jオプションを使用してJSPレポートをローカルでプレビューする場合、JSPがイメージなどの外部ファイルに依存していたり、または生成されるJavaファイルを確認したりする場合は、Reports Builderによる一時ファイルの処理方法を理解しておく必要があります。
JSPは.java
ファイルに変換され、クラス・ファイルにコンパイルされます。クラス・ファイルを実行すると、.html
ファイルとしてHTMLが返されます。この.htmlファイル、.java
ファイルおよび.class
ファイルは、すべて$REPORTS_TMP/docroot
ディレクトリに置かれます。$REPORTS_TMP
はコマンドライン・パラメータとしてReports Builderに渡すことができるので、docrootディレクトリのデフォルトの場所は変更できます。docroot
ディレクトリのファイルは、Reports Builderの終了時にクリーン・アップされます。
デフォルトでは、Reports Builderのドキュメント・ルートは、$REPORTS_TMP
環境変数で指定したディレクトリの下にあるdocroot
ディレクトリ(c:/temp/docroot
など)です。エンド・ユーザーは、このデフォルトのdocroot
をコマンドラインから(WEBSERVER_DOCROOT
コマンドライン・キーワードを使用して)変更できます。JSPがイメージやスタイル・シートなどの外部ファイルに依存している場合は、それらをdocroot
ディレクトリにコピーする必要があります。また、WEBSERVER_DOCROOT
コマンドライン値を独自のドキュメント・ルート・ディレクトリに指定することもできます。
JSPは.java
ファイルに変換され、.class
ファイルにコンパイルされます。.class
ファイルを実行すると、.html
ファイルとしてHTMLが返されます。この.htmlファイル、.java
ファイルおよび.class
ファイルは、すべて$REPORTS_TMP/docroot
ディレクトリに置かれます。$REPORTS_TMP
はコマンドライン・パラメータとしてReports Builderに渡すことができるので、docroot
ディレクトリのデフォルトの場所は変更できます。docroot
ディレクトリのファイルは、Reports Builderの終了時にクリーン・アップされます。
emp.jsp
を実行した後のdocroot
ディレクトリの構造は次のようになります(デフォルトのdocroot
である$REPORTS_TMP/docroot
を使用します)。
temp docroot 3000 working directory for instance of the Builder default defaultWebApp temporary JSP working directory temp _pages _empxxx.class compiled Java class _empxxx.java translated Java file log OC4J log directory global-application.log server.log orion-conf OC4J configuration files directory stderr.log debug log when WEBSERVER_LOG=yes stdout.log 3002 another instance's working directory css template style sheets images template images WEB-INF lib reports_tld.jar web.xml rwerror.jsp template error JSP empxxx.jsp working copy of emp.jsp empxxx.html resulting output
emp012345678.jsp
)。
第3.7.16.4項「Webブラウザでのレポート出力の表示」
このトピックでは、ペーパーベースのレポートに追加できるWebリンクについて説明します。このリンクは、レポートをHTMLファイルに生成しWebブラウザで表示するときにアクティブになります。
多くの場合、Webリンクはオブジェクトのプロパティ・インスペクタで定義できます。実行時の動的リンクは、リンク値に列名とフィールド名を指定することで作成できます。条件付き設定など、さらに複雑なWebリンクを実装する必要がある場合は、PL/SQLおよびReports Builderのビルトイン・パッケージ・プロシージャSRW.SET_ATTRを使用して、リンクを指定する必要があります。
HTMLフォーマットのレポート出力には、次の種類のWebリンクを含めることができます。
さらに、エスケープを使用する次のヘッダーおよびフッターを追加して、HTMLタグをペーパーベースのレポートに追加することができます。
このトピックでは、ペーパーベースのレポートに追加できるWebリンクについて説明します。このリンクは、レポートをPDFファイルに実行しPDFビューアで表示するときにアクティブになります。
PDFフォーマットのレポート出力には、次の種類のWebリンクを含めることができます。
多くの場合、Webリンクはオブジェクトのプロパティ・インスペクタで定義できます。実行時の動的リンクは、リンク値に列名とフィールド名を指定することで作成できます。条件付き設定など、さらに複雑なWebリンクを実装する必要がある場合は、PL/SQLを使用してリンクを指定する必要があります。
ハイパーリンクは、次のいずれかの宛先へのハイパー・テキスト・リンクを指定するオブジェクトの属性です。
「追加のハイパーリンク属性」プロパティを設定すると、ハイパーリンクに適用するHTMLを追加指定できます。
第3.6.10.1.8項「プロパティ・インスペクタを使用したハイパーリンクの作成」
第3.6.10.2.7項「PL/SQLを使用したハイパーリンクの作成」
グラフ・ハイパーリンクは、グラフの領域からWebレポート内の指定の場所へのアクティブ・リンクです。エンド・ユーザーは、Web(JSPベース、あるいはペーパーベースのPDFまたはHTML)にレポートを表示し、グラフの1つ以上の領域をクリックして、別のリンク情報にドリルダウンできます。
ハイパーリンクの宛先は、ハイパー・テキスト・リンクの宛先を識別するオブジェクトの属性です。
第3.6.10.1.7項「プロパティ・インスペクタを使用したハイパーリンクの宛先の作成」
第3.6.10.2.8項「PL/SQLを使用したハイパーリンクの宛先の作成」
ブックマークは、オブジェクトへのリンクとなる文字列を指定するオブジェクトの属性です。
第3.6.10.1.10項「プロパティ・インスペクタを使用したブックマークの作成」
第3.6.10.2.10項「PL/SQLを使用したブックマークの作成」
第3.6.10.1.11項「プロパティ・インスペクタを使用したブレーク列上のブックマークの作成」
(PDF出力のみ)アプリケーション・コマンドライン・リンクは、オブジェクトがクリックされたときに実行するコマンドラインを指定するオブジェクトの属性です。
アプリケーション・コマンドライン・リンクに関連付けられているオブジェクトを、さらにWebリンクのソース(ハイパーリンク)にすることはできません。
第3.6.10.1.9項「プロパティ・インスペクタを使用したアプリケーション・コマンドライン・リンクの作成」
第3.6.10.2.9項「PL/SQLを使用したアプリケーション・コマンドライン・リンクの作成」
レポート後値(第2.2.10項「前および後のエスケープについて」を参照)では、本体の外にHTMLコマンドを追加しても、レポートをスプレッドシート出力に生成したときに反映されません。これは、出力でHTMLコマンドが適切に指定されている場合でも同様です。次に例を示します。</body><table><tr><td><B> the text to be bolded </B></td><tr></table></html>
本文終了タグの前にHTMLコマンドを追加すると、レポートをスプレッドシート出力に生成したときに正常に反映されます。次に例を示します。<table><tr><td><B> the text to be bolded </B></td><tr></table></body></html>
スプレッドシート出力の詳細は、第2.8.13項「スプレッドシート出力について」を参照してください。
第3.6.10.1.1項「プロパティ・インスペクタを使用したHTMLドキュメント・ヘッダーの作成」
第3.6.10.2.1項「PL/SQLを使用したHTMLドキュメント・ヘッダーの作成」
第3.6.10.1.2項「プロパティ・インスペクタを使用したHTMLドキュメント・フッターの作成」
第3.6.10.2.2項「PL/SQLを使用したHTMLドキュメント・フッターの作成」
第3.6.10.1.3項「プロパティ・インスペクタを使用したHTMLページ・ヘッダーの作成」
第3.6.10.2.3項「PL/SQLを使用したHTMLページ・ヘッダーの作成」
第3.6.10.1.4項「プロパティ・インスペクタを使用したHTMLページ・フッターの作成」
第3.6.10.2.4項「PL/SQLを使用したHTMLページ・フッターの作成」
第3.6.10.1.5項「プロパティ・インスペクタを使用したHTMLパラメータ・フォーム・ヘッダーの作成」
第3.6.10.2.5項「PL/SQLを使用したHTMLパラメータ・フォーム・ヘッダーの作成」
第3.6.10.1.6項「プロパティ・インスペクタを使用したHTMLパラメータ・フォーム・フッターの作成」
第3.6.10.2.6項「PL/SQLを使用したHTMLパラメータ・フォーム・フッターの作成」
スタイル・シート(またはカスケード・スタイル・シート)は、HTMLドキュメントの書式をきわめて柔軟に設定できるようにするHTMLの拡張書式です。スタイル・シートをサポートすることで、HTMLドキュメントで次のことが可能になります。
つまり、レポートをHTMLCSSドキュメントとしてフォーマットしたときに、レポート内の高度な書式がそのまま保持されます。スタイル・シートで拡張されていないHTMLドキュメントでは、基本的なテキスト書式とインポートされたイメージのみが表示されます。スタイル・シートでは、高度にフォーマットされたテキストのイメージは、同等のスタイル、カラーおよびフォントを持つテキスト・オブジェクトに置換されます。テキスト・オブジェクトとイメージ・オブジェクトは、オーバーラップさせて配置できます。すべてのテキストは完全に検索可能で、ダウンロードするイメージも少なくてすみます。
スタイル・シートを利用したHTMLドキュメントを表示するには、スタイル・シートをサポートしているブラウザが必要です。
現在、どの企業のWebサイトでも、Webページ全体で企業のルック・アンド・フィールを実現するためにスタイル・シートが使用されています。外部スタイル・シートは、Webページが参照するカスケード・スタイル・シート(CSS)ファイルです。エンド・ユーザーは通常、Webサイト上のページで使用されているものと同じスタイルをWebレポートに適用することを望みます。
以前のリリースでは、スタイル・シートやユーザー定義のスタイルをレポートに適用する場合、HTMLCSS出力を手動で編集する必要がありました。
Oracle Reports 10gリリース2(10.1.2)からは、HTMLCSS出力用のユーザー定義スタイルおよびスタイル・シートを、Reports Builderを使用して指定できます。スタイルは、新しいプロパティである「スタイル・シート」、「CSSクラス名」および「CSS ID」(これらのプロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照)を使用して、レポート、フィールド、テキスト、枠および繰返し枠の各オブジェクトに適用できます。生成されるHTMLCSS出力にはスタイル・シートへのリンクが含まれ、ユーザー定義のスタイルがオブジェクトに適用されます。
次の要素は、HTMLのスタイル・シート拡張ではサポートされません。
第3.7.16.4項「Webブラウザでのレポート出力の表示」
この項のトピックは、第1.7項「データ・モデル・オブジェクト」で説明した基本的な概念に基づいています。
サマリー列は、他の列にあるデータに対して計算を実行するときに使用します。レポート・ウィザードまたはデータ・ウィザードでは、合計、平均、件数、最小値、最大値および%合計のサマリーを作成できます。また、サマリー列はデータ・モデル・ビューで手動で作成することもでき、プロパティ・インスペクタを使用すると、最初、最後、標準偏差および分散のサマリーも作成できます。
消費税などのカスタマイズされた計算がレポートで必要な場合は、式列を作成します(第3.8.10項「式列の作成または編集」を参照)。
式列は、プレースホルダ列などの列にあるデータに対してユーザー定義の計算を実行するときに使用します。たとえば、:ITEMTOT *.07は1つの列に対して計算を実行する式で、:SAL + :COMMはレコード内の2つの列を使用して計算を実行する式です。式は、PL/SQLエディタを使用してPL/SQLで作成できます。
プレースホルダは、任意のPL/SQLでデータ型と値を設定する列です。プレースホルダ列は、列の値を選択的に設定するとき(たとえば、毎回n番目の値をフェッチする場合、または毎回特定の値を含むレコードをフェッチする場合など)に便利です。プレースホルダ列の値は、次の場所に設定できます。
ユーザー・パラメータ、システム・パラメータおよび列は、バインド参照または字句参照で参照できます。
バインド参照(またはバインド変数)は、文字列、数字、日付などの、SQLまたはPL/SQL内の1つの値を置換するときに使用します。特に、問合せのSELECT
、WHERE
、GROUP BY
、ORDER BY
、HAVING
、CONNECT BY
、START WITH
の各句で式を置換するときに、バインド参照を使用すると効果的です。バインド参照はFROM
句では参照できず、予約語または予約句のかわりに使用することもできません。
バインド参照は、コロン(:)の後に対象の列名またはパラメータ名を入力して作成します。SELECT
文でバインド参照を作成する前に、対象になる列またはパラメータを作成しないと、Reports Builderによってデフォルトでパラメータが作成されます。
バインド参照に、予約済のSQLキーワードと同じ名前を使用することはできません。詳細は、『Oracle Database SQLリファレンス』を参照してください。
次の例では、選択された行にあるCOMMPLAN
のNULL値がDFLTCOMM
の値によって置換されます。
SELECT CUSTID, NVL(COMMPLAN, :DFLTCOMM) COMMPLAN FROM ORD;
CUST
の値を使用して、特定の1人の顧客を選択します。
SELECT ORDID, TOTAL FROM ORD WHERE CUSTID = :CUST;
SELECT
句にあるNVL(COMMPLAN, :DFLTCOMM)
のような非集計式はすべて、GROUP BY
句でレプリケートする必要があります。
SELECT NVL(COMMPLAN, :DFLTCOMM) COMMPLAN, SUM(TOTAL) TOTAL FROM ORD GROUP BY NVL(COMMPLAN, :DFLTCOMM);
MINTOTAL
の値を使用して、最小発注量の顧客を選択します。
SELECT CUSTID, SUM(TOTAL) TOTAL FROM ORD GROUP BY CUSTID HAVING SUM(TOTAL) > :MINTOTAL;
SORT
の値を使用して、ソート基準にSHIPDATE
またはORDERDATE
を選択します。これはORDER BY 1
とは異なることに注意してください。ここでは、:SORT
は値として使用されており、SELECT
リストでの式の位置を識別しているわけではありません。この例ではDECODE
が必要になることにも注意してください。DECODE
を伴わない場合は、ORDER BY
句でバインド変数を使用できません。
SELECT ORDID, SHIPDATE, ORDERDATE, TOTAL FROM ORD ORDER BY DECODE(:SORT, 1, SHIPDATE, 2, ORDERDATE);
CONNECT BY
句およびSTART WITH
句での参照の使用方法は、WHERE
句およびHAVING
句と同じです。
procedure double is begin; :my_param := :my_param*2; end;
my_param
の値は、2で乗算されmyparam
に代入されます。
字句参照は、SELECT
文に埋め込む列またはパラメータのプレースホルダです。字句参照を使用すると、SELECT
、FROM
、WHERE
、GROUP BY
、ORDER BY
、HAVING
、CONNECT BY
およびSTART WITH
の後の句を置換できます。字句参照は、実行時にパラメータで複数の値を代入するときに使用してください。
PL/SQL文では、字句参照を作成できません。ただし、PL/SQLでバインド参照を使用すると、次の例に示すように、SQLで字句的に参照されるパラメータ値を設定できます。
字句参照は、アンパサンド(&
)の後に対象の列名またはパラメータ名を入力して作成します。デフォルトの定義では、字句参照を使用できません。そのため、次のことを実行する必要があります。
SELECT
句で字句参照を使用する場合は、代入する列ごとに別々の字句参照を作成する必要があります。また、各字句参照に対して別名を割り当てることをお薦めします。これにより、ランタイム・パラメータ・フォームで字句参照に対して異なる値を入力しても、同じレイアウト・フィールドとボイラープレート・ラベルを使用できるようになります。
SELECT
句で字句参照を使用する場合は、レポートのデータ・モデルに指定されている数と同じ数の項目を実行時に指定する必要があります。実行時に字句参照に対して指定する各値は、「初期値」と同じデータ型にする必要があります。
SELECT
句で字句参照を使用する場合は、列幅がパラメータの「初期値」プロパティから取得されます。そのため、使用する最大幅の列にパラメータの「初期値」が対応していることを確認する必要があります。
WHERE
など)を直接入力する必要があります。たとえば、親問合せと子問合せが次のように記述されているとします。親問合せ:
SELECT DEPTNO FROM EMP
子問合せ:
SELECT &PARM_1 COL_1, &PARM2 COL_2 FROM EMP WHERE &PARM_1 = :DEPTNO
WHERE
句でのDEPTNO
に対するバインド参照の作成方法に注意してください。このDEPTNO
は親問合せで選択されています。また、この例では、データ・モデル・ビューで列を指定せずに、問合せ間にリンクが作成されていることを前提にしています。
WHERE
句が字句参照によって置換されることに注意してください)。
SELECT ENAME, SAL FROM EMP &where_clause
where_clause
パラメータの値にバインド変数への参照が含まれる場合は、After Formトリガーでその値を指定するか、事前に指定する必要があります。Before Reportトリガーでパラメータに次の値を設定すると、エラーが発生します。
WHERE SAL = :new_bind
After Formトリガーで同じ値を設定すると、レポートが実行されます。
SELECT &P_ENAME NAME, &P_EMPNO ENO, &P_JOB ROLE FROM EMP;
P_ENAME
、P_EMPNO
およびP_JOB
を使用して、実行時に選択する列を変更できます。たとえば、P_EMPNO
の値としてDEPTNO
をランタイム・パラメータ・フォームで入力します。この場合、列に別名を使用してください。別名を使用しないと、実行時に選択する列を変更する場合に、SELECT
リストの列名がReports Builderの列と一致しなくなり、レポートが実行されなくなります。
SELECT ORDID, TOTAL FROM &ATABLE;
ATABLE
を使用して、実行時に選択する列を基に表を変更できます。たとえば、実行時にATABLE
にORD
を入力します。この方法で表名を動的に変更するとき、列名が表によって異なる場合は、SELECT
句にも字句参照を使用すると効果的です(前述の例を見てください)。
SELECT ORDID, TOTAL FROM ORD WHERE &CUST;
CUST
を使用して、ORD
から取得するデータを制限できます。実行時に、WHERE
句を任意の形式で指定できます。
SELECT NVL(COMMPLAN, DFLTCOMM) CPLAN, SUM(TOTAL) TOTAL FROM ORD GROUP BY &NEWCOMM;
NEWCOMM
の値を使用して、GROUP BY
句を定義できます。
SELECT CUSTID, SUM(TOTAL) TOTAL FROM ORD GROUP BY CUSTID HAVING &MINTOTAL;
MINTOTAL
の値を使用して、最小発注量の顧客などを選択できます。
SELECT ORDID, SHIPDATE, ORDERDATE, TOTAL FROM ORD ORDER BY &SORT;
SORT
の値を使用して、ソート基準にSHIPDATE
、ORDERDATE
、ORDID
またはこれらの任意の組合せを選択できます。また、問合せにCONNECT BY
句やSTART WITH
句などを追加するときにも使用できます。
CONNECT BY
句およびSTART WITH
句でのパラメータの使用方法は、WHERE
句およびHAVING
句と同じです。
SELECT &COLSTABLE;
COLSTABLE
を使用して、実行時にSELECT
句とFROM
句の両方を変更できます。たとえば、実行時にCOLSTABLE
にDNAME ENAME, LOC SAL FROM DEPT
を入力できます。
SELECT * FROM EMP &WHEREORD;
WHEREORD
を使用して、実行時にWHERE
句とORDER BY
句の両方を変更できます。たとえば、実行時に&WHEREORD
にWHERE SAL > 1000 ORDER BY DEPTNO
を入力できます。
SELECT &BREAK_COL C1, MAX(SAL) FROM EMP GROUP BY &BREAK_COL;
BREAK_COL
を使用して、実行時にSELECT
リストとGROUP BY
句の両方を変更します。パラメータ&BREAK_COL
の「初期値」はJOB
です。実行時に、レポートのユーザーはGROUP_BY_COLUMN
(データ型はCHARACTER)というパラメータに値を指定できます。
GROUP_BY_COLUMN
の妥当性チェック・トリガーで、次のPL/SQLプロシージャをコールして、GROUP_BY_COLUMN
の値を渡します。
procedure conv_param (in_var IN char) is begin if upper(in_var) in ('DEPTNO','EMPNO','HIREDATE') then :break_col := 'to_char('||in_var||')' ; else :break_col := in_var; end if; end;
このPL/SQLでは、必要に応じて、1つのTO_CHAR
がユーザーが選択したブレーク列の箇所に挿入されています。SQLでBREAK_COL
への字句参照を作成する方法に注意してください。PL/SQLでは、字句参照は許可されていないため、BREAK_COL
へのバインド参照を作成する必要があります。
バインド参照は、SQLまたはPL/SQLで1つの値を置換するときに使用します。特に、問合せのSELECT
、WHERE
、GROUP BY
、ORDER BY
、HAVING
、CONNECT BY
、START WITH
の各句で式を置換するときに、バインド参照を使用すると効果的です。バインド参照はFROM
句では参照できません。次に例を示します。
SELECT ORDID,TOTAL FROM ORD WHERE CUSTID = :CUST
字句参照は、実行時にパラメータで複数の値を代入するときに、SELECT
文に埋め込むテキストのプレースホルダです。字句参照を使用すると、SELECT
、FROM
、WHERE
、GROUP BY
、ORDER BY
、HAVING
、CONNECT BY
およびSTART WITH
の後の句を置換できます。PL/SQLでは、字句参照を作成できません。列または表の字句パラメータを参照する前に、そのパラメータを事前定義して、初期値を指定する必要があります。次に例を示します。
SELECT ORDID, TOTAL FROM &ATABLE
リンク不可能な問合せとは、列間のリンクを介して、その問合せにリンクできない列オブジェクトを含む詳細な問合せのことです(列間にリンクを作成すると、Reports Builderによって問合せにWHERE
句が追加されます)。このようなリンクを作成しようとすると、メッセージ・ダイアログ・ボックスが表示され、グループ対グループの問合せ(親グループを使用)を作成するか、または操作を取り消すかのいずれかを選択するように求められます。リンク不可能な問合せには、そのタイトル・バーにリンク不可能な問合せのアイコンが表示されます。
かわりに、2つの問合せの間に、グループ対グループのリンクを作成して(グループ対グループのリンクを作成しても、問合せにWHERE
句は追加されません)、親列を参照するバインド変数を使用し、子問合せのSELECT
文にWHERE
句を追加できます。第3.8.9項「データ・リンクの作成」を参照してください。
たとえば、子問合せのADDRESS.STREET
列と親問合せのLOC1
列の間に、列対列のリンクを作成するとします。この場合、グループ対グループのリンクを作成して、子問合せのSQL文を次のように変更します。
SELECT * FROM EMP E WHERE E.ADDRESS.STREET = :LOC1
Reports Builderでは、データはフォーマット(レイアウト)とは無関係に定義されます。そのため、どのようなときにデータ・リンクを使用するか(グループではなく)を理解しておく必要があります。
2つの問合せと1つのデータ・リンクを使用するマスター/ディテール・レポートのレイアウトと、1つの問合せと2つのグループを使用するグループ・レポートのレイアウトは同じになります。次の例は、同じデータを問い合せているデフォルトのマスター/ディテール・レポートとグループ・レポートです。2つのレポート間の相違点に注意してください。グループ・レポートとは異なり、マスター/ディテール・レポートには部門40が表示されています。これは、マスター/ディテール・レポートのデータ・リンクが外部結合になり、このリンクにより自動的に無関係なデータがフェッチされるためです。外部結合を必要とするグループ・レポートを設計する場合は、(+)を使用してSELECT
文に明示的に外部結合を指定します。
次の図に示すマスター/ディテール/ディテール・レポートは、3つのデータ・グループを含むレポートです。マスター・グループごとに、2つの無関係なディテール・グループが表示されています。マスター/ディテール/ディテール・レポートまたはその応用レポートを作成するには、データ・リンクを使用する必要があります。1つの問合せと3つのグループを使用して、コントロール・ブレークを持つこのレポートを作成する場合は、その問合せにより2つのディテール・グループ間にリレーションシップが構築されます。
マトリックス・オブジェクトは2つの繰返し枠の間にリレーションシップを定義するだけで、いずれかのオブジェクトに所有されているわけでも、マトリックス・オブジェクト自体がいずれかのオブジェクトを所有しているわけでもありません。マトリックス・オブジェクトは、「マトリックス」レイアウト・スタイルのレイアウトにのみ作成できます。データ・モデルに必要なグループが揃っていれば、レポートに複数のマトリックスを含めることができます。Reports Builderでは、垂直に交差する繰返し枠の各組合せに対して、1つのマトリックス・オブジェクトが作成されます。
繰返し枠はマトリックスのディメンションであり、マトリックス・オブジェクトにはセル・グループのフィラーまたは値を保持するフィールドが含まれます。マトリックスを形成するには、繰返し枠の1つの「印刷方向」プロパティが「縦」に設定され、他の繰返し枠の「印刷方向」プロパティが「横」に設定されている必要があります。
Group1という名前のグループにC_DEPTNOという列があるとします。C_DEPTNO列は、その値をデータベース列DEPTNOから取得します。Group2という名前のグループには列C_JOBと列C_DEPTNO1があります。列C_JOBの値はデータベース列JOBから取得し、列C_DEPTNO1はGroup1の問合せへのリンクに使用します。Group3というグループにはSUMSALという列があり、データベース列SALのサマリーになっています。
Job Analyst Clerk Manager 10 $1300 $2450 Dept 20 $6000 $1900 $2975 30 $ 950 $2850
この例では、次のようになります。
さらに複雑なマトリックスを構成する必要がある場合は、Group1とGroup2に列を追加します。たとえば、Group1に、部門番号を表す列以外に、部門の場所(LOC)を表す列を追加します。マトリックスは次のようになります。
Job Loc Dept Analyst Clerk Manager New York 10 $1300 $2450 Dallas 20 $6000 $1900 $2975 Chicago 30 $ 950 $2850
この項のトピックは、第1.8項「レイアウト・オブジェクト」で説明した基本的な概念に基づいています。
レイアウト・オブジェクトの概念と適用されるプロパティには、重要なものがいくつかあります。
第3.10.2項「セクションのデフォルト・レイアウトの作成」
Oracle Reportsオンライン・ヘルプの「プロパティ」の項
レポート・ウィザードでデフォルトのレイアウト・スタイルの1つを選択すると、レポートのデータ・モデルに基づいて、Reports Builderによって必要なレイアウト・オブジェクトが作成されます。たとえば、メール・ラベル・レポートを作成する場合、適切なデータ・モデルが定義されていれば、単にメール・ラベルのデフォルト・スタイルを選択します。Reports Builderによって、レポートのレイアウト・オブジェクトが自動的に作成され、レイアウト・モデル・ビューに表示されます。作成したデフォルトのレイアウトは、必要に応じてカスタマイズできます。Reports Builderによって生成された各レイアウト・オブジェクトは、切取り、コピー、貼付け、サイズ変更および編集を行うことができます。
レイアウトのデフォルトには、次のルールが適用されます。
Reports Builderでは、次のルールに従って、レポート・レイアウトがデフォルト設定されます。
例外:表形式レポート、フォーム形式レポート、グループ左レポート、グループ上レポートおよびマトリックス・レポートでは、CHARフィールド(デフォルト幅を狭くした場合)およびLONGフィールドはデフォルトで、「水平拡張度」プロパティが「固定」に「垂直拡張度」プロパティが「可変」に設定されています。その結果、データの語が次の行に折り返され、すべてのフィールド値が切り捨てられることなく表示されます。
第3.10.2項「セクションのデフォルト・レイアウトの作成」
次の方法で、イメージをレポートに追加できます。
1つ目の方法(イメージ・インポート」ダイアログ・ボックスを使用)では、TIFF、JFIF、BMP、TGA、PCX、PICT、GIF、CALS、RAS、OIF、PCDのフォーマットのイメージを含めることができます。
その他の2つの方法(ファイル・リンク・オブジェクトを作成し、データベースで列を選択)では、Oracle Reportsでサポートされているその他のフォーマット(JPEG(Progressive JPEGやExif JPEGなどのすべてのタイプ)、PNG、BMP、TIFF、GIFおよびCGM)を含めることができます。
プレビューアのみでなく印刷レポートにもイメージが表示されるように、デフォルトでイメージはフィールドに表示されます。
REPORTS_OUTPUTIMAGEFORMAT環境変数およびOUTPUTIMAGEFORMATコマンドライン・キーワードにより、イメージングのサポートが強化されています。イメージングのサポートが強化されたことにより、複雑なグラフィックを多用するレポートを、より忠実にイメージを出力しながら生成できるようになりました。UNIXの場合はさらに、イメージを表示する際のウィンドウ・システムへの依存性が排除されています。PostScriptプリンタ・ドライバscreenprinter.ppd
により、イメージの画面解像度が決定されます。
非キャッシュ参照を使用することで、ローカルのディスク領域を使い切ることなく、イメージ・オブジェクトを無制限に含めることができます。非キャッシュ参照では、オブジェクトがレポート処理に必要なときのみデータベースから読み込まれます。
HTML出力用にレポートをフォーマットしていれば、イメージのURLを参照したときにイメージが表示されます。他の出力フォーマットでは、URLテキストがペーパー・デザイン・ビューに表示され、出力先(ファイルやPDFドキュメントなど)には何も表示されません。ユーザーは、URLが実際に有効かどうかを確認する必要があります。Reports Builderでは、リソースの有無やプロトコル構文の妥当性はチェックされません。URLを含むオブジェクトのサイズは、HTML出力でのイメージのサイズを定義します。オブジェクトに適用される拡張度のプロパティは、すべて無視されます。
アンカーは、オブジェクトの境界線の間を結び付けることで、オブジェクト間の相対的な位置を確定します。たとえば、可変サイズの繰返し枠の境界線にボイラープレート・テキストをアンカーすると、繰返し枠のサイズを変更しても、ボイラープレートと繰返し枠間の距離と位置関係は保持されます。
アンカーは、親オブジェクトに対する子オブジェクトの上下左右の相対的な位置関係を決定します。子オブジェクトは、親オブジェクトの内外どちらにも配置できます。
一部のレイアウト・オブジェクトのサイズは、レポートが実行されデータがフェッチされるときに変更されるため、アンカーを使用してオブジェクト間の相対的な位置関係を定義する必要があります。アンカーは、アンカー先のオブジェクトに対する子オブジェクトの相対的な位置を定義します。オブジェクトの位置は、データがフェッチされた後の両オブジェクトのサイズに基づいて決定され、エディタでのサイズには依存しません。また、ペーパー・レイアウト・ビューでのオブジェクトの位置がレポート出力での最終的な位置に反映されることに注意してください。レイアウト内の物理的なオフセットは、すべて「アンカー」プロパティのパーセントによる指定位置に組み込まれます。
アンカーには2種類あります。
子オブジェクトを親オブジェクトにアンカーするときは、アンカーの連結点になるX座標とY座標が重要です。
親オブジェクトが子オブジェクトの上または下にある場合:
親オブジェクトが子オブジェクトの右または左にある場合:
繰返し枠または枠の外にオブジェクトを配置する必要がありながら、繰返し枠または枠をオブジェクトの所有者にする場合は(つまり、その所有者のフォーマット時にフォーマットするために)、繰返し枠または枠の中でオブジェクトに連結するアンカーを作成します。
作成したアンカーを縮小できます。アンカーの縮小によって、レポート内での不要な余白を回避できます。こうした余白は、親と子が同じページに出力されなかったり、設定されている「印刷条件」が原因で、親オブジェクトが子オブジェクトと同じページに入らない場合に生じる可能性があります。アンカーを縮小すると、出力時に、親オブジェクトのある場所に子オブジェクトを移動できます。子オブジェクトの相対位置は、アンカーで定義したとおりに保持されます。
Reports Builderでは、実行時に暗黙的なアンカーが本体領域に作成されます。本体とマージンでは、そのアルゴリズムが少し異なります。
プッシュ・パスの方向が「縦」の場合は、プッシュされる側のオブジェクトの上0%をプッシュする側のオブジェクトの下0%にアンカーします。
プッシュ・パスの方向が「横」の場合は、プッシュされる側のオブジェクトの左0%をプッシュする側のオブジェクトの右0%にアンカーします。
ケース1では、M_SumsがB_Text1とR_Enameの両方のプッシュ・パスにあります。M_SumsはB_Text1とR_Enameから等距離にあるため、このケースでは、暗黙的なアンカーを決定する通常の基準(最も短い距離)を適用できません。その結果、このアルゴリズムでは、実行時に、暗黙的なアンカーがM_SumsとB_Text1の間またはM_SumsとR_Enameとの間にランダムに作成されます。この動作を回避するには、M_SumsとB_Text1またはR_Enameの間に、明示的なアンカーを作成します。
ケース2では、B_Text3がM_Empのプッシュ・パスにあります。M_EmpとR_Mgrの下境界線は実質的に同じ位置にあるため、B_Text3はM_EmpまたはR_Mgrのどちらかに暗黙的にアンカーされる可能性があります。その結果、このアルゴリズムでは、実行時に、暗黙的なアンカーがB_Text3とM_Empの間またはB_Text3とR_Mgrとの間にランダムに作成されます。この動作を回避するには、B_Text3からどちらかのオブジェクトに明示的なアンカーを作成するか、R_EnameとB_Text2の間の明示的なアンカーを削除します。明示的なアンカーを削除するとR_MgrはM_Empの子孫として扱われ、その結果、暗黙的なアンカーはB_Text3とM_Empの間にのみ作成されるようになります。
(ケース2が生じる可能性が最も高いのはキャラクタ・モードです。キャラクタ・モードでは、オブジェクトの境界線がペーパー・レイアウト・ビューでオーバーラップすることがよくあります。)
Reports Builderでは、マージン領域のすべてのタイプBオブジェクトに対して、本体と同じアルゴリズムを使用して暗黙的なアンカーが作成されます。ただし、タイプAオブジェクトには、オブジェクトの左上隅からマージンの左上隅に暗黙的なアンカーが作成されます。タイプAオブジェクトが他のタイプAオブジェクトに暗黙的にアンカーされることはありません(これにより、タイプAオブジェクトはページから絶対にプッシュされなくなります。ただし、同じレイヤーに他のタイプAオブジェクトがある場合は、それによって上書きされる場合があります)。
選択したカラーとパターンは、オブジェクト全体に適用されます(オブジェクト内の全テキストに1つのカラーを適用することはできますが、テキストのセグメントごとには適用できません)。
レポート内のカラーとパターンは、次の方法で変更できます。
さらに、カラー・パレットの環境設定を設定して、レポートでの使用方法を指定できます(第3.2.6項「カラー・パレットの環境設定の設定」を参照)。また、カラー・パレットを変更することで、パレットのカラー定義を変更できます(第3.9.6.5項「カラー・パレットの変更」を参照)。
現行のレポートで使用しているカラー・パレットを変更するには、新しいカラー・パレットをインポートします。また、現行のカラー・パレットを他のレポートで使用するためにエクスポートすることもできます(第3.9.6.6項「カラー・パレットのインポートまたはエクスポート」を参照)。
第3.9.6.4項「PL/SQLを使用したカラーおよびパターンの変更」
Oracle Reportsオンライン・ヘルプの「リファレンス」→「カラー・パレットとパターン・パレット」の項のトピック「Oracle CDE1カラー・パレット」、「デフォルト・カラー・パレット」、「グレースケール・カラー・パレット」および「パターン・パレット」
Oracle Reportsオンライン・ヘルプの「リファレンス」→「PL/SQLリファレンス」→「ビルトイン・パッケージ」の項のトピック「SRWのビルトイン・パッケージ」
Oracle Reportsオンライン・ヘルプの「プロパティ」の項のトピック「テンプレート・プロパティ」
問合せ、グループ、枠、繰返し枠、フィールド、マトリックス・オブジェクトおよびボイラープレート・オブジェクトのサイズを変更できます。アンカーのサイズは変更できません。ただし、アンカーされたオブジェクトの一方を移動した場合、アンカーのサイズは自動的に変更されます。
ペーパー・レイアウト・ビューでは、オブジェクトはそれを囲むオブジェクトより上のレイヤーにある必要があります。たとえば、繰返し枠に属するフィールドであれば、ペーパー・レイアウト・ビューでは、繰返し枠より少なくとも1つ上のレイヤー上にする必要があります。そうしないと、フィールドが繰返し枠に囲まれていると判別されなくなり、実行時に頻繁にエラーが発生します。ペーパー・レイアウト・ビューでオブジェクトを移動またはグループ化するときは、そのレイヤーが変更される場合があり、それによってレポートの実行時に頻繁にエラーが発生します。この問題を回避するには、ペーパー・レイアウト・ビューでのオブジェクトの移動時に、制限モードまたはフレックス・モードを使用する必要があります。
第3.9.4.3項「現行のモード(制限またはフレックス)の変更」
この項のトピックは、第1.9項「パラメータ・フォーム・オブジェクト」で説明した基本的な概念に基づいています。
パラメータ・フォームをHTML拡張すると、Webでのペーパー・レポートの実行時に、ランタイム・パラメータ・フォームをHTMLタグ付きテキストとJavaScriptで拡張できます。ペーパー・パラメータ・フォームをWebでの表示用に拡張する場合、次のことが実行できます。
オブジェクト・ナビゲータから、または「ツール」→「パラメータ・フォーム・ビルダー」を選択して、「パラメータ・フォーム・ビルダー」にアクセスできます。
第1.9.4項「Webレポートのパラメータ・フォームについて」
この項の各トピックでは、Reports BuilderにおけるPL/SQLの使用について説明します。
PL/SQLエディタを使用すると、PL/SQLプログラム・ユニットを作成し、編集できます。
プログラム・ユニットを変更すると、依存するプログラム・ユニットのコンパイル済のステータスが失われ、オブジェクト・ナビゲータの「プログラム・ユニット」ノードの下にある名前の後にアスタリスク(*)が表示されます。「名前」リストを使用して、PL/SQLエディタで直接これらのプログラム・ユニットにナビゲートし、再コンパイルできます。
ストアドPL/SQLエディタを使用すると、データベースでストアドPL/SQLプログラム・ユニットを作成し、編集できます(データベースは、オブジェクト・ナビゲータの「データベース・オブジェクト」ノードの下に表示されます)。
第3.13.3.2項「ストアド・プログラム・ユニットの作成」
構文パレットは、PL/SQLの言語要素やビルトイン・パッケージの構成メンバーを、PL/SQLエディタやストアドPL/SQLエディタに表示して、コピーできるようにするプログラミング・ツールです。
プログラム・ユニットは、現行のレポート内でPL/SQLから参照できるパッケージ、ファンクションまたはプロシージャです。
注意 プログラム・ユニットは、他のレポートから参照できません。複数のレポートから参照できるパッケージ、ファンクションまたはプロシージャを作成する場合は、外部PL/SQLライブラリを作成します(第3.13.5.1項「外部PL/SQLライブラリの作成」を参照)。 |
レポートでのPL/SQLの使用に関する詳細な例は、第39章「PL/SQLを含むレポートの作成」を参照してください。
次のようなグループと列を含むレポートがあるとします。
Groups Columns Summary ----------------------------------------- RGN REGION RGNSUMSAL SUM(DEPTSUMSAL) COSTOFLIVING DEPT DNAME DEPTNO DEPTSUMSAL SUM(EMP.SAL) JOB JOB HEADCOUNT COUNT(EMP.EMPNO) EMP ENAME EMPNO SAL COMM
これらのグループや列で、給与に生計費手当(COSTOFLIVING
)を適用する複数の式を作成します。作業が重複しないように、次のようなPL/SQLファンクションを作成して式から参照することができます。
function CompSal(salary number) return number is begin return (salary*CostofLiving); end;
次の2つは、このPL/SQLファンクションを式で参照する例です。
CompSal(:RGNSUMSAL) or CompSal(:SAL) + COMM
第3.13.3.1項「ローカル・プログラム・ユニットの作成」
ストアド・プログラム・ユニット(ストアド・サブプログラムやストアド・プロシージャとも呼ばれます)は、個々にコンパイルし、いつでも実行できるようにOracleデータベースに永続的に格納しておくことができます。ストアド・プログラム・ユニットをコンパイルしてデータ・ディクショナリに格納すると、スキーマ・オブジェクトとなり、そのデータベースに接続されたどのアプリケーションからでも参照できます。
ストアド・プログラム・ユニットを使用すると、生産性、パフォーマンス、アプリケーションの整合性およびセキュリティが向上し、メモリーも節約できます。たとえば、ストアド・プロシージャやストアド・ファンクションのライブラリを使用してアプリケーションを設計すると、冗長なコーディングがなくなり、生産性を向上できます。
ストアド・プログラム・ユニットは、解析およびコンパイルされた形式で格納されます。そのため、ストアド・プログラム・ユニットがコールされると、ロード後すぐにPL/SQLエンジンに渡されます。また、ストアド・プログラム・ユニットには共有メモリーが使用されます。そのため、プログラム・ユニットのコピーを1つのみメモリーにロードしておけば、複数のユーザーがそのプログラムを実行できます。
ストアド・プログラム・ユニットはOracleデータベースで実行されるので、レポートのローカルのPL/SQLよりも速くデータベース処理を実行できます。そのため、データベース処理を実行するPL/SQLには、通常ストアド・プログラム・ユニットを使用します。データベース処理を実行しないPL/SQLの場合は、ローカル・プログラム・ユニットを使用します。ただし、ネットワークの負荷が高く、レスポンス時間が非常に遅い場合には、ストアド・プログラム・ユニットを使用しても、データベース処理が速くならないことがあります。同様に、サーバーがローカル・マシンよりも非常に速い場合、ローカル・プログラム・ユニットを使用しても、データベース以外の処理が速くならないことがあります。
第3.13.3.2項「ストアド・プログラム・ユニットの作成」
外部PL/SQLライブラリは、レポート定義に依存しないPL/SQLプロシージャ、ファンクションおよびパッケージの集まりです。外部ライブラリをレポートに連結すると、その内容を何度でも参照できます。たとえば、連結ライブラリのプロシージャは、Before Reportトリガーとフォーマット・トリガーのどちらからでも参照できます。このため、アプリケーションごとに同じPL/SQLを再入力する必要がありません。
レポートまたは別の外部ライブラリに関連付けられた外部PL/SQLライブラリは、連結ライブラリと呼ばれます。
連結ライブラリは、レポートまたは別の外部ライブラリに関連付けられた外部PL/SQLライブラリです。外部ライブラリを連結すると、レポート内からそのパッケージ、ファンクションおよびプロシージャを参照できます。たとえば、MYLIBという外部ライブラリをレポートに連結し、そのライブラリにADDXYというファンクションが含まれる場合、レポート内のどのPL/SQLからでもADDXYを参照できます。
外部PL/SQLライブラリは、レポート定義に依存しません。
ローカルPL/SQLは、外部PL/SQLライブラリのプロシージャまたはファンクションを参照するよりも速く実行されます。そのため、多数のアプリケーション間でコードを共有する方が、パフォーマンスのオーバーヘッドよりも重要である場合にのみ、外部PL/SQLライブラリを使用してください。
式は、式列またはプレースホルダ列に移入するPL/SQLファンクションです。式のPL/SQLには、オブジェクト・ナビゲータ、PL/SQLエディタまたはプロパティ・インスペクタ(「PL/SQL式」プロパティ)からアクセスできます。
「データ型」プロパティがNUMBERに設定されている列は、データ型NUMBER
の値を返す式のみを含めることができます。「データ型」プロパティがDATEに設定されている列は、データ型DATE
の値を返す式のみを含めることができます。「データ型」プロパティがCHARACTERに設定されている列は、データ型CHARACTER
、VARCHAR
またはVARCHAR2
の値を返す式のみを含めることができます。
COMP
の値を条件に使用し(たとえば、IF :COMP = 10
)、その値を直接代入文に設定することはできます(たとえば、:COMP:= 15
)。
SRW.DO_SQL
を使用する場合は、同じレポートで更新または挿入されたデータベースの値を読み込まないようにしてください。出力の書式設定のために、Reports Builderがデータベースからレコードをフェッチする正確な時間は確定されません。Reports Builder内部では、パフォーマンスを最適化するために、データの先読みが行われています。そのため、特定のレコードに更新が実行される前に、同じレコードがすでにアクセスされている可能性があります。Reports Builderでは、内部依存性リストを作成し、ユーザー・イグジットの起動、サマリーの計算などのイベントが正しい順序で実行されることが保証されています。ただし、Reports Builderでこれらのイベントと、内部データへのアクセスやデータの書式設定との同期を取ることは保証できません。
次の例では、給与にコミッションを足した値を列に移入します。
function salcomm return NUMBER is begin return(:sal + :comm); end;
次のコードでは、コミッションの値がNULL以外の場合に、給与にコミッションを足します。
function calcomm return NUMBER is temp number; begin if :comm IS NOT NULL then temp := :sal + :comm; else temp := :sal; end if; return (temp); end;
グループ・フィルタは、グループに含めるレコードを決定します。パッケージされたフィルタの「最初」と「最後」を使用して、グループの最初のn個または最後のn個のレコードを表示できます。また、PL/SQLを使用して独自のフィルタを作成することもできます。グループ・フィルタには、オブジェクト・ナビゲータ、プロパティ・インスペクタ(「PL/SQLフィルタ」プロパティ)、またはPL/SQLエディタからアクセスできます。
このファンクションは、ブール値(TRUEまたはFALSE)を返す必要があります。ファンクションがTRUEを返すか、FALSEを返すかに応じて、現行レコードがレポートに含まれるか、レポートから除外されます。
「フェッチする行の最大数」プロパティでは、問合せによってフェッチする実際のレコード数が制限されます。グループ・フィルタでは、問合せによってすべてのレコードがフェッチされた後に、どのレコードを含めるか、または除外するかが判断されます。「フェッチする行の最大数」では、実際に取り出されるデータの量が制限されるため、通常、グループ・フィルタよりも実行速度が速くなります。「フィルタ・タイプ」プロパティを「最後」または「条件付」に設定する場合、Reports Builderでは、フィルタを適用する前に、グループ内のすべてのレコードを取り出す必要があります。問合せに対して「フェッチする行の最大数」を使用する場合も、このことを念頭に置いてください。その問合せに依存する他のグループのサマリーに影響を及ぼす可能性があります。たとえば、「フェッチする行の最大数」プロパティを8に設定すると、その問合せに基づいたサマリーには、取り出された8つのレコードのみ使用されます。
グループ・フィルタはクロス積グループに追加できません。
function filter_comm return boolean is begin if :comm IS NOT NULL then if :comm < 100 then return (FALSE); else return (TRUE); end if; else return (FALSE); -- for rows with NULL commissions end if; end;
REF
カーソル問合せは、PL/SQLを使用してデータをフェッチします。各REF
カーソル問合せは、カーソル変数からカーソル値を返すPL/SQLファンクションに関連付けられています。このファンクションでは、REF
カーソルがオープンされ、REF
カーソル型と一致するSELECT
リストが含まれたSELECT
文と関連付けられている必要があります。
REF
カーソルのみがサポートされています。次に例を示します。
type c1 is REF CURSOR RETURN emp%ROWTYPE;
REF
カーソル問合せを作成する場合、リンクはグループ間リンクのみが有効です。列間リンクは使用できません。
REF
カーソルの実装にストアド・プログラム・ユニットを使用する場合は、Oracleデータベースにそのプログラム・ユニットを同時に格納できるという利点があります。
REF
カーソルを使用します。
さらに、REFカーソルの実装にストアド・プログラム・ユニットを使用する場合は、Oracleデータベースにそのプログラム・ユニットを同時に格納できるという利点があります。
REFカーソルとストアド・サブプログラムの詳細は、『PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。
REF
カーソルが含まれるパッケージの例/* This package spec defines a REF CURSOR ** type that could be referenced from a ** REF CURSOR query function. ** If creating this spec as a stored ** procedure in a tool such as SQL*Plus, ** you would need to use the CREATE ** PACKAGE command. */ PACKAGE cv IS type comp_rec is RECORD (deptno number, ename varchar(10), compensation number); type comp_cv is REF CURSOR return comp_rec; END;
REF
カーソルとファンクションが含まれるパッケージ/* This package spec and body define a ref ** cursor type as well as a function that ** uses the REF CURSOR to return data. ** The function could be referenced from ** the REF CURSOR query, which would ** greatly simplify the PL/SQL in the ** query itself. If creating this spec ** and body as a stored procedure in a ** tool such as SQL*Plus, you would need ** to use the CREATE PACKAGE and CREATE ** PACKAGE BODY commands. */ PACKAGE cv IS type comp_rec is RECORD (deptno number, ename varchar(10), compensation number); type comp_cv is REF CURSOR return comp_rec; function emprefc(deptno1 number) return comp_cv; END; PACKAGE BODY cv IS function emprefc(deptno1 number) return comp_cv is temp_cv cv.comp_cv; begin if deptno1 > 20 then open temp_cv for select deptno, ename, 1.25*(sal+nvl(comm,0)) compensation from emp where deptno = deptno1; else open temp_cv for select deptno, ename, 1.15*(sal+nvl(comm,0)) compensation from emp where deptno = deptno1; end if; return temp_cv; end; END;
REF
カーソル問合せ/* This REF CURSOR query function would be coded ** in the query itself. It uses the cv.comp_cv ** REF CURSOR from the cv package to return ** data for the query. */ function DS_3RefCurDS return cv.comp_cv is temp_cv cv.comp_cv; begin if :deptno > 20 then open temp_cv for select deptno, ename, 1.25*(sal+nvl(comm,0)) compensation from emp where deptno = :deptno; else open temp_cv for select deptno, ename, 1.15*(sal+nvl(comm,0)) compensation from emp where deptno = :deptno; end if; return temp_cv; end;
REF
カーソル問合せコール側ファンクション/* This REF CURSOR query function would be coded ** in the query itself. It uses the cv.comp_cv ** REF CURSOR and the cv.emprefc function from ** the cv package to return data for the query. ** Because it uses the function from the cv ** package, the logic for the query resides ** mainly within the package. Query ** administration/maintenance can be ** done at the package level (for example, ** modifying SELECT clauses could be done ** by updating the package). You could also ** easily move the package to the database. ** Note this example assumes you have defined ** a user parameter named deptno. */ function DS_3RefCurDS return cv.comp_cv is temp_cv cv.comp_cv; begin temp_cv := cv.emprefc(:deptno); return temp_cv; end;
第3.8.1.9項「問合せの作成: REFカーソル問合せツール」
PL/SQLでデータ操作言語(DML)またはデータ定義言語(DDL)を使用する場合は、SRW.DO_SQLビルトイン・プロシージャを使用できます。SRW.DO_SQLは、DMLおよびDDLでのみ使用し、データのフェッチには使用しないでください。DMLおよびDDLの詳細は、『Oracle Database SQLリファレンス』を参照してください。
Oracle Reportsの処理モデルにより、DDLはBefore Parameter FormトリガーおよびAfter Parameter Formトリガーのみで使用することをお薦めします。DMLは、PL/SQLが受け入れられる場所ならどこにでも入力できます。
このレポートの処理で報告されるDMLまたはDDLは、After Parameter Formトリガーで(またはその前で)実行する必要があります。Before Reportトリガーでは整合性は保証できません。これは、Oracle Reportsが、レポートの定義に基づいて、そのトリガーの前にデータ・カーソルでの作業を開始する必要があるためです。Before Reportトリガーの前にReports Builderで必ず行われることは、関連する表を記述し、カーソルを開くことです。これ以降に表で行った変更は、レポートに表示されません。
ビルトイン・パッケージは、論理的に関連するPL/SQL型、オブジェクト、ファンクションやプロシージャの集まりです。これは通常、パッケージ仕様部(データ宣言を含む)とパッケージ本体という2つの部分で構成されます。パッケージを使用すると、グローバル変数を作成できるので非常に便利です。
複数のパッケージ・プロシージャが用意されており、PL/SQLベースのアプリケーションを構築またはデバッグするときに使用できます。PL/SQLコードでは、次に説明するように、Reports Builderビルトイン・パッケージ(SRW)と各種のツール・ビルトイン・パッケージのプロシージャ、ファンクションおよび例外を使用できます。
Reports Builderには、ビルトイン・パッケージ(SRW)が付属しています。ビルトイン・パッケージは、様々なファンクション、プロシージャおよび例外が含まれたPL/SQL構文の集まりで、ライブラリまたはレポートで参照できます。
SRWパッケージに含まれるPL/SQLでは、フィールドの書式設定の変更、他のレポートからのレポートの実行、レポート・エラー時に表示するカスタマイズ・メッセージの作成、およびSQL文の実行などのアクションを実行できます。
SRWパッケージの内容は、連結されていないくても、ライブラリまたはレポートから参照できます。ただし、SQL*Plusなどの別の製品からこの内容を参照することはできません。
パッケージに含まれる構文は通常、パッケージ・ファンクション、パッケージ・プロシージャおよびパッケージ例外のように「パッケージ」を付けて呼びます。
Oracle Reportsオンライン・ヘルプの「リファレンス」の項のトピック「SRWのビルトイン・パッケージ」
各種のPL/SQL構文を含むいくつかのクライアント側ビルトイン・パッケージが用意されており、アプリケーションの構築やアプリケーション・コードのデバッグ時に参照できます。これらのビルトイン・パッケージは、パッケージSTANDARDの拡張機能としてインストールされません。このため、いずれかのパッケージの構文を参照するたびに、その名前の前にパッケージ名を付ける必要があります(TEXT_IO.PUT_LINEなど)。
次のようなツール・ビルトイン・パッケージがあります。
Reports Builderコンポーネント内で動的データ交換(DDE)をサポートします。
PL/SQLプログラム・ユニットをデバッグする際のプロシージャ、ファンクションおよび例外が含まれます。これらのビルトイン・サブプログラムを使用すると、デバッグ・トリガーを作成し、トリガーでブレークポイントを設定できます。
Reports Builderアプリケーションに作成したPL/SQLコード内で、動的SQLを実行するためのプロシージャとファンクションが含まれます。
文字列(VARCHAR2)のリストを作成および保守するために使用できるプロシージャ、ファンクションおよび例外が含まれます。これを使用すると、PL/SQLバージョン1で配列を作成できるようになります。
ダイナミック・ライブラリのC関数をコールする外部関数インタフェースが含まれます。
PL/SQLからJavaクラスをコールするインタフェースが含まれます。
現行の言語環境に関する詳細な情報を取り出せるようにします。この情報を使用して、言語の属性を調べ、ローカルの日付と数値形式を使用してアプリケーションをカスタマイズできます。また、キャラクタ・セットの照合に関する情報と、一般的なキャラクタ・セットも取得できます。現行の言語名とキャラクタ・セットを検索する機能も用意されており、特殊なケースをテストし、利用するアプリケーションを作成できます。
PL/SQLプログラム・ユニットのチューニング(たとえば、特定のコード部分を実行するのにどれぐらいの時間がかかるか調べる)に使用できるプロシージャ、ファンクションおよび例外が含まれます。
ファイルからの情報の読込み、ファイルへの情報の書込みを可能にする構文が含まれます。Text_IOで使用可能なプロシージャやファンクションは、次のカテゴリに分類されます。
サブプログラムで使用する値を取り出して、Oracle環境変数と対話できるようにします。
DEBUGなどの別のビルトイン・パッケージで作成したエラー・スタックにアクセスし、操作できるようにします。
一部のビルトイン・パッケージ(たとえば、DEBUGパッケージ)では、エラーを示すために例外を使用するだけでなく、追加のエラー情報も提供します。この情報は、エラー・スタックの形式で保持されます。
エラー・スタックには、詳細なエラー・コードと関連するエラー・メッセージが含まれます。スタック上のエラーには、ゼロ(最古)からn-1(最新)の番号が付けられます。nはスタック上に現在あるエラー数です。TOOL_ERRパッケージのサービスを使用すると、エラー・スタックにアクセスし、操作できます。
PL/SQLコードを移植しやすくするため、リソース・ファイルのすべてのテキスト・データを分離して、リソース・ファイルから文字列リソースを抽出します。
次のパッケージは、Oracle Reportsの内部でのみ使用されます。これらのパッケージには、外部で使用できるサブプログラムはありません。
ReportsによりプライベートPL/SQLサービスで使用される構文が含まれます。
データベースに格納されたサブプログラムをコールします。このパッケージへのコールは自動的に生成されます。
PL/SQLからJavaをコールしやすくします。
Oracle Reportsオンライン・ヘルプの「リファレンス」→「PL/SQLリファレンス」→「ビルトイン・パッケージ」の項の各ツール・ビルトイン・パッケージに関するトピック
トリガーではイベントをチェックします。イベントが発生すると、トリガーに関連付けられたPL/SQLコードが実行されます。
レポート・トリガーは、レポートに含まれるデータではなく、レポートを開いたり、閉じたりするレポート・イベントに対応してアクティブ化されます。アクティブ化される順序はどのレポートにもあらかじめ定義されています。
フォーマット・トリガーは、オブジェクトをフォーマットする前に実行されます。フォーマット・トリガーは、オブジェクトのフォーマット属性を動的に変更するときに使用できます。
妥当性チェック・トリガーは、コマンドラインでパラメータ値が指定された場合、およびランタイム・パラメータ・フォームを受け入れた場合に実行されるPL/SQLファンクションです。
データベース・トリガーは、データベースに暗黙的に格納され、INSERT
、UPDATE
またはDELETE
などのトリガーを実行する文が関連付けられた表に発行されたときに実行されるプロシージャです。
レポート・トリガーは、レポートの実行およびフォーマット時に、所定回数だけPL/SQLファンクションを実行します。これらのトリガーに、PL/SQLの条件付き処理機能を使用すると、レポート・フォーマットのカスタマイズ、初期化タスクの実行、およびデータベースへのアクセスなどを行うことができます。レポート・トリガーを作成または変更するには、オブジェクト・ナビゲータの「レポート・トリガー」ノードを使用します。レポート・トリガーは、明示的にTRUEまたはFALSEを返す必要があります。
Oracle Reportsには、次のような5つのグローバル・レポート・トリガーがあります。新しいグローバル・レポート・トリガーは作成できません。トリガー名は、トリガーをどの時点で起動するかを示します。
レポート実行時のイベントの順序は次のとおりです。
WHERE
句が字句参照によって置換されることに注意してください)。SELECT ENAME, SAL FROM EMP
&WHERE_CLAUSE
WHERE_CLAUSE
パラメータの値にバインド変数への参照が含まれる場合は、After Parameter Formトリガーでその値を指定するか、事前に指定する必要があります。Before Reportトリガーでパラメータに次の値を設定すると、エラーが発生します。After Parameter Formトリガーで同じ値を設定すると、レポートが実行されます。
WHERE SAL = :new_bind
フォーマット・トリガーは、オブジェクトがフォーマットされる前に実行されるPL/SQLファンクションです。トリガーは、オブジェクトのフォーマット属性を動的に変更するときに使用できます。たとえば、フォーマット・トリガーを使用して、値がゼロ未満の場合に太字で表示できます。また、フォーマット・トリガーを使用して、値が1,000,000より大きい場合にそのフィールドに科学表記法を使用できます。
フォーマット・トリガーは、Reports Builderが特定オブジェクトのフォーマットを試行するたびに、そのオブジェクトで起動できます。Reports Builderが、ページの一番下にあるオブジェクトのフォーマットを開始するとします。オブジェクトがそのページ上に収まらない場合、Reports Builderはフォーマットを中止し、次のページで再フォーマットを行います。この場合、フォーマット・トリガーは2回起動します。したがって、このトリガーでは、ロギングなどの永続的な処理を行うことはお薦めしません。
Reports Builder SRWビルトイン・パッケージには、オブジェクトのフォーマット属性を簡単に変更できるPL/SQLプロシージャが含まれています。これには、次のような処理を行うプロシージャがあります。
Oracle Reportsオンライン・ヘルプの「リファレンス」の項のトピック「フォーマット・トリガー」を参照してください。
第3.13.4.1項「フォーマット・トリガーの作成または編集」
妥当性チェック・トリガーは、コマンドラインでパラメータ値が指定された場合、およびランタイム・パラメータ・フォームを受け入れた場合に実行されるPL/SQLファンクションです。
注意
JSPベースのWebレポートの場合、Reports Builderでレポートを実行するとランタイム・パラメータ・フォームが表示されますが、Oracle Reports Servicesのランタイム環境では表示されません。ランタイム・パラメータ・フォームでパラメータを指定しないと、妥当性チェック・トリガーはFALSEを返し、エラー・メッセージ「 |
妥当性チェック・トリガーは、パラメータの「初期値」プロパティの妥当性チェックを行うときにも使用します。ファンクションがTRUEを返すか、FALSEを返すかに応じて、ランタイム・パラメータ・フォームに戻ります。
Oracle Reportsオンライン・ヘルプの「リファレンス」の項のトピック「妥当性チェック・トリガー」参照してください。
第3.11.4項「実行時におけるパラメータ値の妥当性チェック」
データベース・トリガーは、データベースに暗黙的に格納され、INSERT、UPDATEまたはDELETEなどのトリガー文が関連付けられた表に発行されたときに実行されるプロシージャです。トリガーは、表でのみ定義でき、ビューでは定義できません。ただし、ビューの実表のトリガーは、INSERT、UPDATEまたはDELETE文がビューに対して発行された場合に起動します。
トリガーは、ユニットとして実行されるSQL文およびPL/SQL文を含めることができ、別のストアド・プロシージャをコールできます。トリガーは、必要な場合にのみ使用してください。トリガーを多用すると、カスケード・トリガーや再帰的トリガーが発生することがあります。たとえば、トリガーが起動されたときに、トリガー本体のSQL文が別のトリガーを起動することがあります。
データベース・トリガーを使用すると、複合ビジネス・ルールを規定し、すべてのアプリケーションを同じように動作させることができます。トリガーを作成する場合は、次のガイドラインに従います。
アプリケーションでのトリガーの使用方法の詳細は、『Oracleアプリケーション開発者ガイド』を参照してください。各種トリガーの詳細は、『Oracleデータベース概要』を参照してください。
この項のトピックでは、Reports Builderにおけるテンプレートの使用について説明します。
テンプレートでは、複数のペーパーベースのレポートに適用する共通特性とオブジェクトを定義します。たとえば、会社のロゴを含み、レポートの選択した領域にフォントやカラーを設定するテンプレートを定義できます。
レポート・ウィザードを使用してペーパーベースのレポートを作成する場合は、ウィザードの「テンプレート」ページで、テンプレート(.tdfファイル)をレポートに適用します。「テンプレート」ページには、デフォルトのテンプレートのほか、独自に作成したテンプレートが一覧されます。
テンプレートを選択すると、テンプレートのマージン領域にあるオブジェクトが、現行のレポート・セクションの同じ位置にインポートされ、既存のオブジェクトがすべて上書きされます。テンプレートの本体領域内にあるオブジェクトの特性(書式設定、フォント、カラーなど)が、現行のレポート・セクションの本体領域にあるオブジェクトに適用されます。また、定義したテンプレート・プロパティ、パラメータ、レポート・トリガー、プログラム・ユニットおよび連結ライブラリも適用されます。レポートのセクション別に異なるテンプレートを適用できます。ただし、デフォルトのテンプレートを適用する場合、異なるデフォルトのテンプレートを使用した2つのレポート・ブロックを1つのレポートに組み合せることはできません。同一レポート内のすべてのレポート・ブロックで、同じデフォルトのテンプレートを使用する必要があります。
後でレポートに別のテンプレートを適用した場合、既存のテンプレート・オブジェクトは現行のレポート・セクションから削除されます。
テンプレートのペーパー・レイアウト-ボディ領域では、オブジェクト・ナビゲータの次の各ノードの「デフォルト」および「上書き」属性を定義できます。
オブジェクト・ナビゲータの「デフォルト」ノードでは、すべてのレポート・スタイルに対するデフォルトの可視属性(書式設定、フォント、カラーなど)を定義します。個別のレポート・スタイルの属性を定義する場合は、「上書き」ノードを使用します。レポートにテンプレートを適用すると、「上書き」ノードでローカライズされた属性を除き、すべての「デフォルト」属性がレポートに適用されます。
オブジェクト・ナビゲータの「上書き」ノードで、個別のレポート・スタイルの属性を定義できます。各レポート・スタイルには、レポート内のグループにマッピングされる1つ以上のセクションが含まれます。
単一セクションのレポート・スタイル:表形式、フォーム、メール・ラベル、フォーム・レター
複数セクションのレポート・スタイル:グループ左、グループ上、マトリックス、グループ別マトリックス
複数のグループに対応するレポート・スタイルの場合、必要に応じて追加のセクションを作成できます。セクションは、次のようにグループにマッピングされます。
セクションとグループの数が同じ場合:1対1のマッピングが行われます(最初のセクションが最初のグループに、2番目のセクションが2番目のグループに、というようにマッピングされます)。
セクションよりグループの数が多い場合:最後の2つ前のセクションまで1対1のマッピングが行われます。この後のグループはすべて、最後の1つ前のセクションにマッピングされ、最後のグループが最後のセクションにマッピングされます。セクションが1つしかない場合、すべてのグループがそのセクションにマッピングされます。
グループよりセクションの数が多い場合:最後の前のグループまで1対1のマッピングが行われます。最後のグループは最後のセクションにマッピングされます。
レポートにテンプレートを適用する場合、次のオブジェクト、プロパティおよび属性がすべてテンプレートから現行のレポート・セクションに適用されます。
また、テンプレートのマージン内にあるレイアウト・オブジェクトはすべて、現行のレポート・セクションの同じ位置にコピーされます。
テンプレートでは、「セクション」、「枠」、「フィールド」、「ラベル」、「ヘッダー」および「サマリー」の各プロパティがすべて、その値を継承できます。
「デフォルト」プロパティは、Reports Builderであらかじめ設定された値を継承します。プロパティをReports Builderのデフォルトの値に設定すると、プロパティ・インスペクタでそのプロパティの横にあるアイコンが小さな円になります。「デフォルト」プロパティは、値を変更または選択して、ツールバーの「プロパティをローカライズ」ボタンをクリックするとローカライズされます。プロパティがローカライズされると、その横にあるアイコンが四角形になります。プロパティを継承した値に戻すには、プロパティを選択し、ツールバーの「プロパティを継承」ボタンをクリックします。
「上書き」セクションのプロパティは、「デフォルト」プロパティから値を継承します。プロパティが「デフォルト」プロパティから値を継承した場合、プロパティ・インスペクタでプロパティの横にあるアイコンが矢印になります。「上書き」セクションのプロパティは、値を変更または選択して、ツールバーの「プロパティをローカライズ」ボタンをクリックするとローカライズされます。プロパティがローカライズされると、その横にあるアイコンが赤い×印が付いた矢印に変わります。「上書き」セクションのプロパティを継承した値に戻すには、プロパティを選択し、ツールバーの「プロパティを継承」ボタンをクリックします。
テンプレート・エディタは、テンプレートのオブジェクトおよび書式設定プロパティを定義できる作業領域です。これは、レポート・エディタのペーパー・レイアウト・ビューに似ています。このマージン領域で、オブジェクト(ページ番号、テキスト、グラフィックなど)を作成、削除および変更できます。本体領域ではオブジェクトを作成したり、削除したりできませんが、本体オブジェクトのプロパティはプロパティ・インスペクタで変更できます(「ツール」→「プロパティ・インスペクタ」)。
「レポート・スタイル」リストで、選択したレポート・スタイルのレイアウトを表示できます。すべてのレポート・スタイルに対してデフォルト設定を定義するには、「レポート・スタイル」リストから「デフォルト」を選択します。レポート・スタイルを個別に変更するには、「レポート・スタイル」リストからレポート・スタイルを選択し、デフォルトに上書きする設定を指定します。
次の方法で、テンプレート・エディタにアクセスできます。
新しいテンプレートを作成する場合:
既存のテンプレートを表示する場合:
この項のトピックでは、Reports Builderの様々な出力フォーマットと機能について説明します。
Oracle Reportsの以前のリリースでは、レポートの各セクションは、ヘッダー・セクション、メイン・セクション、トレーラ・セクションの順にフォーマットされました。このリリースには、3つのレポート・セクションのフォーマット順序を変更する機能が導入されています。
フォーマット順序は、次の方法で設定できます。
この機能は、任意のレポート・セクションを最初にフォーマットして、フォーマット時にのみ認識できるページ番号などの情報を取得し、その情報を前のセクションのフォーマットに使用するような場合に便利です。
たとえば、レポートの目次(TOC)を作成するには、メイン・セクションを最初にフォーマットしてから、レポート・トリガーを使用して、TOCエントリが含まれる表を作成できます。TOCの最初の要素をフォーマットするとトリガーが起動され、そのTOCエントリとページ番号が含まれる行がTOC表に作成されます。メイン・セクションのフォーマット後に、ヘッダー・セクションがフォーマットされるようにフォーマット順序の設定を定義できます。ヘッダー・セクションには、TOC表に基づいたレポート・ブロックを含められます。フォーマットの終了後、レポートをTOC(ヘッダー・セクション)、レポート本体(メイン・セクション)、トレーラ・セクションの順に出力できます。
レポートのTOCを作成する手順は、第35章「単純な目次と索引を使用したペーパー・レポートの作成」および第36章「複数階層の目次を使用したペーパー・レポートの作成」のサンプル・レポートを参照してください。
ページ番号付けに関する注意
レポートのページ番号は、フォーマット順に付けられます。たとえば、ヘッダー・セクションが2ページ、メイン・セクションが8ページ、トレーラ・セクションが3ページあるレポートでは、フォーマット順序を「メイン-トレーラ-ヘッダー」に設定した場合、レポート出力には、12、13(最後にフォーマットされたヘッダーのページ)、1、2、3、4、5、6、7、8(最初にフォーマットされたメインのページ)、9、10、11(2番目にフォーマットされたトレーラのページ)というようにページ番号が付けられます。
プレビューアでレポート出力を確認する必要がない場合(たとえば、完全にテストされたレポートから大量に出力する場合や、複数のレポートを連続して実行する必要がある場合)、rwrun
を使用してレポートをバッチで実行することができます。これにより、レポートを実行している間に、別のタスクを処理することができます。
コマンドラインからバッチ・モードでレポートを実行することも、コマンド・ファイルを使用して引数を指定することもできます。同じ一連の引数を使用して複数のレポートを実行する場合、コマンド・ファイルによって入力の手間を大幅に省くことができます。
また、Reports Serverを使用して、コマンドラインでBACKGROUND=YES
を指定し(rwclient
、rwcgi
またはrwservlet
で有効)、レポートを非同期で実行することで、レポートをバッチ処理することもできます。つまり、クライアントはサーバーにコールを送り、レポート・ジョブが完了するのを待たずに別のプロセスへ進みます。クライアント・プロセスが削除されると、そのジョブも取り消されます。
第3.7.3項「コマンド・ファイルを使用したレポートの実行」
BATCH
およびBACKGROUND
の詳細は、Oracle Reportsオンライン・ヘルプの「リファレンス」から「コマンドライン」の項を参照してください。
レポートの配布により、複数の出力フォーマットを生成できるレポートを設計し、レポートを1回実行するのみで複数の宛先に配布できます。 レポート全体に配布を作成することも、レポートの個々のセクションにのみ配布を作成することもできます。たとえば、レポートを1回実行するときに、HTML出力を生成し、プリンタへPostScriptバージョンを送信し、レポートの一部または全部のセクションを配布リストに電子メールで送信できます。
レポートを配布するには、第3.7.12項「複数の宛先へのレポートの配布」で説明しているように、最初に配布を定義してから、その配布を有効にします。
セクションレベルの配布の使用例は、第37章「レポートの一括処理と配布」を参照してください。この章では、「繰返し」プロパティおよび配布XMLファイルを使用して、1つのセクションに複数の配布先を定義する方法について説明します。
MODE
システム・パラメータは、レポート全体で1つの値のみに設定できます(DEFAULT
、BITMAP
またはCHARACTER
)。
セクション分割と配布を使用することで、レポート出力をHTMLで公開したり、Postscriptバージョンでプリンタに送信したりできます。
シニア・マネージャにはレポートの集計サマリーを送信し、個々のマネージャには詳細な分析を電子メールで送信できます。この例では、2つのレポート・セクションを持つレポートを1つ作成する必要があります。1つは縦長のサマリー・セクションで、もう1つは横長の詳細セクションにします。「繰返し」プロパティを使用して、マネージャをリストするデータ・モデル・グループに詳細セクションを関連付け、次にデータ・モデル・グループの各インスタンスの宛先を変更することで、適切なマネージャに出力を送信します。
第2.1.2項「レポートのセクション分割と各セクションについて」
『Oracle Application Server Reports ServicesレポートWeb公開ガイド』の「拡張配布の作成」
「配布」ダイアログ・ボックスでレポートまたはレポート・セクションの配布を定義するかわりに、DSTファイルを作成し、DESTINATIONキーワードを使用してその名前をコマンドラインで指定し、レポートを配布することもできます。
コマンドラインでDSTファイルを指定した場合、定義される配布は、「配布」ダイアログ・ボックスを使用して定義した配布を上書きします。
注意 配布エラーを識別するためにレポートの配布をトレースした場合(第3.14.19項「レポートの配布のトレース」を参照)、トレース・ファイル形式はDSTファイルによく似ているため、トレース・ファイルから切取りと貼付けを行ってDSTファイルを作成できます。 |
DSTファイルの各行の形式は次のとおりです。
dist_ID: output_def
意味は次のとおりです。
dist_ID
は、配布の宛先の識別子です。
output_def
は、配布の宛先を指定する一連のrwrun
コマンドライン・キーワードまたはrwclient
コマンドライン・キーワードです。また、次のパラメータが有効です。
LEVELは、配布の有効範囲を指定します。
LEVELの値
REPORT
は、配布がレポート全体に適用されることを示します。
Header_Section
は、配布がヘッダー・セクションにのみ適用されることを示します。
Main_Section
は、配布がメイン(本体)セクションにのみ適用されることを示します。
Trailer_Section
は、配布がトレーラ・セクションにのみ適用されることを示します。
デフォルト
REPORT
次の例は、レポート出力をHTMLファイルに、メイン・セクションのコピー3部をプリンタに、ヘッダー・セクションをPDFファイルに送信するよう定義しています。
;dst file (specified with the DESTINATION keyword on the command line) DEST1: DESNAME=testdst1.HTM DESTYPE=file DESFORMAT=HTML COPIES=1 LEVEL=Report DEST2: DESNAME=¥¥luna¥2op813 DESTYPE=printer DESFORMAT=BITMAP COPIES=3 LEVEL=Main_Section DEST3: DESNAME=SECTION1.pdf DESTYPE=file DESFORMAT=pdf COPIES=1 LEVEL=Header_Section
第2.1.2項「レポートのセクション分割と各セクションについて」
Pluggable Destinationsは、エンジン(Oracle Reports以外のエンジンも含む)によりReports Serverのキャッシュで作成されたコンテンツの配布に使用できます。Oracle Reportsには、あらかじめ次の宛先が用意されています。
Oracle Reports Java APIを使用して、独自の宛先へのアクセスを定義し、Reports Serverに新しい宛先コンポーネントを実装することもできます。既定の宛先と独自にカスタマイズした宛先のどちらを使用するかを選択し、キャッシュ内の出力の宛先を決定してください。
宛先クラスの実装と登録方法、およびOracle Reportsでの宛先の使用方法は、『Oracle FTP Destination tutorial』を参照してください。このマニュアルは、Oracle Technology Network(OTN)のOracle Reports 10gのページ(http://www.oracle.com/technology/products/reports/index.html)で「Plugin Exchange」をクリックすると「Oracle Reports Plugin Exchange」から入手できます。
『Oracle Application Server Reports ServicesレポートWeb公開ガイド』のOracleAS Reports Servicesの宛先の構成に関する項。このマニュアルは、Oracle Technology NetworkのOracle Reportsドキュメントのページ(http://www.oracle.com/technology/documentation/reports.html)から入手できます。
イベント・ドリブンの公開を使用すると、特定のアクションが実行されたときにレポートを実行するように設定できます。たとえば、従業員が経費レポートを送信すると、データベースに新しいデータが挿入されます。このような挿入イベント(たとえば、データベース・トリガーまたはアドバンスト・キューイング(AQ)メッセージなど)が発生すると、レポートはポータル・ページまたは電子メールによって従業員の管理者に送られ、この経費レポートを承認/拒否するように通知します。
Oracle Reports 10g(9.0.4)では、イベント・ドリブンの公開機能が強化され、レポート・オブジェクトがOracle Workflow内で使用可能になっています。
詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』のイベント・ドリブンの公開の使用方法に関する項を参照してください。このマニュアルは、Oracle Technology NetworkのOracle Reportsドキュメントのページ(http://www.oracle.com/technology/documentation/reports.html)から入手できます。
Before Reportトリガー、Between Pagesトリガーまたはフォーマット・トリガーを使用して、レポートのフォーマット時とは異なるプリンタ・トレーに切り替えることができます。これにより、同じレポートのページを簡単に別の用紙に印刷できます(レターヘッド、各種フォーム、カラー用紙など)。
プリンタに定義されたプリンタ・トレーの名前は、「ページ設定」ダイアログ・ボックスで判断できます。次に、SRW.SET_PRINTER_TRAYを使用して、必要なプリンタ・トレーを設定します。
Oracle Reportsでは、次のような方法でExtensible Markup Language(XML)を使用します。
XMLは、多くの異なるアプリケーションで読み込むことができるエンコーディング・テキスト・フォーマットの形式です。XMLタグは、情報を出力するために使用するか、またはサードパーティ製アプリケーションと電子データを交換(EDI)するプラッガブル・データ・ソースを構築するベースとして使用します。
レポートのXML出力を制御するXMLプロパティは、レポート、グループおよび列という3つのレベルで変更できます。Reports Builderで生成されたXMLファイルでは、その出力は、グループと列で構造化されたデータ・モデルを擬似実行します。XML出力の変更を表示する方法は、第3.7.7項「XML出力の生成」を参照してください。
レポートの配布でのXMLの使用、およびXMLを使用したレポートのカスタマイズの詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』の「拡張配布の作成」と「XMLによるレポートのカスタマイズ」の章を参照してください。このマニュアルは、Oracle Technology NetworkのOracle Reportsドキュメントのページ(http://www.oracle.com/technology/documentation/reports.html)から入手できます。
第3.7.1項「ユーザー・インタフェースからのレポートの実行と出力」
Oracle Reportsオンライン・ヘルプの「XML PDS」の項
Reports Builderでは、レポート出力を、フォーマットされたデータとすべてのオブジェクトを含むHypertext Markup Language(HTML)ファイルおよびカスケード・スタイル・シートのHypertext Markup Language(HTMLCSS)ファイルに生成できます。HTMLは、Microsoft Front Pageなどの多くの異なるWebページ開発ソフトウェア・パッケージやWebブラウザで読み込むことができるエンコーディング・テキスト・フォーマットの形式です。ソフトウェアの編集およびグラフィック機能を使用して、レポート出力を変更および拡張できます。レポート出力をHTMLまたはHTMLCSSファイルに生成する場合、その出力を電子メール、プリンタ、OracleAS PortalおよびWebブラウザなどの、任意のHTML宛先に配布できます。
desname
b.htm
です。レポート出力のファイル名は、desname
d.htm
です。
desname
0.gif
... desname
17.gif
)。
レポートのフォント・サイズ | HTMLのフォント・サイズ |
---|---|
7以下 |
1 |
8〜9 |
2 |
10〜12 |
3 |
13〜15 |
4 |
16〜20 |
5 |
21〜30 |
6 |
31以上 |
7 |
第3.9.2.3項「HTMLタグのボイラープレート・テキスト・オブジェクトの作成」
第3.9.2.7項「HTMLテキスト・オブジェクトのファイルへのリンク」
HTMLページ・ストリーミングを使用すると、レポート全体をダウンロードしなくても、HTML/HTMLCSSレポート出力のページを個別にWebブラウザに表示できます。レポートの第1ページから、残りのレポートの任意のページにナビゲートできます。ブックマークまたはハイパーリンクで宛先をクリックした場合、次のように処理されます。
次のいずれかの方法で、レポートのナビゲーション・コントロール・スクリプトを指定できます。
HTMLページ・ストリーミングでは、各ページが個別のHTMLドキュメントとして書式設定されます。HTMLファイルの名前がmyreport.htm
で、ブックマークがない場合、新しいファイルには次のような名前が付けられます。
myreport.htm
(ベースになるフレーム)
myreportb.htm
(ブックマーク・ファイル。ブックマークをHTMLファイルで使用している場合のみ)
myreport_1.htm
〜myreport_
n.htm(ページ)
myreportj.htm
(ナビゲーションJavaScript)
レポートの最初(ヘッダー)または最後(フッター)のページにのみ表示されるHTMLを指定するには、「Before Report」プロパティまたは「After Report」プロパティを設定するか、SRW.SET_BEFORE_REPORT_HTML
またはSRW.SET_AFTER_REPORT_HTML
PL/SQLプロシージャを使用します。バックグラウンド・カラーやイメージなど、グローバルHTMLをレポート全体に適用するように指定するには、「ページ前」プロパティまたはSRW.SET_BEFORE_PAGE_HTML
PL/SQLプロシージャを設定します。Reports Builderで生成されたHTMLロゴは、レポートの最後のページにのみ表示されます。
レポートをHTML出力またはHTMLCSS出力としてフォーマットするときにページ・ストリーミングを有効にするには、コマンドラインでPAGESTREAM=YES
を指定する必要があります。このオプションは、Reports Builderユーザー・インタフェースでは設定できません。
第3.7.16.5項「HTMLレポート出力の各ページの表示」
第3.6.10.1.12項「プロパティ・インスペクタを使用した、ページがストリーミングされたHTML出力へのナビゲーション・コントロールの追加」
第3.6.10.2.11項「PL/SQLを使用した、ページがストリーミングされたHTML出力へのナビゲーション・コントロールの追加」
Oracle Reportsでは、レポート内のテキスト・オブジェクトに様々なフォント、スタイルおよびカラーを指定できます。SRW
ビルトイン・プロシージャ(Oracle Reportsオンライン・ヘルプの「リファレンス」の項を参照)を使用すると、エンド・ユーザーが実行時にオブジェクト全体に対してテキスト属性を変更することはできますが、テキストのセクションごとに変更することはできません(テキスト・オブジェクトの部分ごとに別々のフォーマットを指定するなど)。以前のリリースでは、列にリッチ・テキスト・コンテンツが含まれていても(フォーマット命令がテキストに埋め込まれている場合など)、このフォーマットは解析されず、レポート出力に適用されませんでした。この制限は、HTMLタグを使用してフォーマットし、オブジェクトの「HTMLタグを含む」プロパティを「はい」に設定することによって対処できますが、こうして指定したフォーマットを表示できるのはHTML出力またはHTMLCSS出力のみでした。その他の出力フォーマット(PDF、RTF、PostScriptなど)で生成されたレポートでは、HTMLタグ自体が出力に表示されました。
Oracle Reports 10gリリース2(10.1.2)で導入されたテキスト・フォーマット拡張機能では、HTMLフォーマット・タグの定義済みのセットを使用してテキスト・スタイル(太字、イタリック、下線および取消し線)およびテキスト属性(フォント名、フォント・カラーおよびフォント・サイズ)をフォーマットし、オブジェクトの「HTMLタグを含む」プロパティを「はい」に設定すれば、Oracle Reportsでサポートされているすべてのビットマップ出力形式でフォーマット済のテキスト・オブジェクトを生成できます。
ボイラープレート・テキスト・オブジェクトにはスタティック値を指定し、フィールド・オブジェクトやテキスト・ファイル・リンク・オブジェクトには動的な値を指定できます。ボイラープレート・テキスト・オブジェクトでも、フィールド・オブジェクトやレポートレベルの列が参照先になっている場合は、動的な値を指定できます。ボイラープレート・テキストに関しては、設計時に指定された形式は、実行時に取得されるリッチ・テキスト形式とマージされます。この機能では、HTMLタグを含むマルチバイト・テキストもサポートされています。
ペーパー・デザイン・ビューまたはペーパー・レイアウト・ビューでは、「HTMLタグを含む」プロパティを「はい」に設定することにより、HTMLフォーマットを適用するオブジェクトを選択できます。CONTAINSHTMLTAGS=NO
を使用して、コマンドラインからレポートを実行した場合、Oracle Reportsでは、オブジェクトの「HTMLタグを含む」プロパティの設定にかかわらず、レポートのHTMLタグが解析されません。HTML出力およびHTMLCSS出力では、ブラウザによってHTMLフォーマット・タグが解析されますが、その他の出力形式では、HTMLタグ自体がレポート出力にそのまま表示されます。
次のHTMLタグは、ボイラープレート・テキスト、テキスト・ファイル・リンクまたはフィールド・オブジェクトに表示されている場合にOracle Reportsで解析されます。記載されていないHTMLタグまたは属性は、HTML/HTMLCSS以外のレポート出力では、そのまま表示されます。
タグ | 結果 |
---|---|
|
テキストが次のようにフォーマットされている場合:
出力は次のようになります。 |
|
このいずれかのタグで囲まれているテキストはイタリックになります。
テキストが次のようにフォーマットされている場合:
出力は次のようになります。 |
|
テキストが次のようにフォーマットされている場合:
出力は次のようになります。 |
|
このいずれかのタグで囲まれているテキストは取消し線で消されます。
テキストが次のようにフォーマットされている場合: 出力は、取消し線付きで表示されます。 |
|
フォント・ファミリ、サイズおよびカラーの属性を指定する汎用スタイル・コンテナ。詳細は表2-3を参照してください。
出力は、Times New Romanフォントの10ポイント・サイズで赤色で表示されます。 |
span
タグのstyle
属性でサポートされているプロパティは次のとおりです。
フォント > フォント・サイズ > フォント・スタイル > フォントの太さ > フォントの幅
フォントが一致しない場合はフォント・サイズの一致を検索し、フォント・サイズが一致しない場合はフォント・スタイルの一致を検索し、以下同様に検索が行われます。フォント検索アルゴリズムの詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』の「Oracle Reportsにおけるフォントの管理」の章を参照してください。このマニュアルは、Oracle Technology NetworkのOracle Reportsドキュメントのページ(http://www.oracle.com/technology/documentation/reports.html)から入手できます。フォント検索では、使用しているフォントに必要な属性(スタイル、サイズなど)の一部がデータに埋め込まれていない場合があります。その場合、使用できないフォント属性はレポート出力に表示されません。
例:
My<b
>format</b>
span
タグのstyle
属性font-family
プロパティで指定できるフォント名は1つだけです。例:
font-family: Arial
カンマ区切りのリストで複数のフォント名を指定した場合、Oracle Reportsではシステムのデフォルト・フォント(通常はCourierかそれと同等のフォント)が使用され、警告が生成されることなくこのタグがレンダリングされます。
"
などの要素はサポートされません。例:
<span style="font-family: "Courier New";">my format!</span>
かわりに二重引用符(")をそのまま使用する必要があります。
例1: インライン・フォント変更
ボイラープレート・テキスト・オブジェクトでは、テキスト・ボイラープレートを次のように指定できます。
<b>My</b>text
「HTMLタグを含む」プロパティを「はい」に設定すると、これは次のようなフォーマット出力になります。
My text
例2: 1行のテキストに複数のフォーマットの指定
次のような、1行でフォーマットされるテキストの範囲(ボイラープレート・オブジェクト内またはデータベース列内)があるとします。
<b>My <span style="font-family:Courier">HTML</span>
</b><u><span style="font-family:Times New Roman">Formats</span></u>
「HTMLタグを含む」プロパティを「はい」に設定すると、これは次のようなフォーマット出力になります。
My HTML
Formats
例3: 複数行のテキストに複数のフォーマットの指定
次のような、複数行でフォーマットされるテキストの範囲があるとします。
Line 1: <i>My<span style="font-family:Courier">
Line 2: HTML</span></i><span style="font-family:Times New Roman><u>
Line 3: Formatting</u></span>.
「HTMLタグを含む」プロパティを「はい」に設定すると、これは次のようなフォーマット出力になります。
Line 1: MyLine 2: HTML
Line 3: Formatting.
前述の例で、複数の連続する行でフォーマットが維持されていることを確認してください。
第3.9.2.3項「HTMLタグのボイラープレート・テキスト・オブジェクトの作成」
第3.9.2.7項「HTMLテキスト・オブジェクトのファイルへのリンク」
Reports Builderでは、レポート出力を、フォーマットされたデータとすべてのオブジェクトを含むPDFファイルに生成できます。レポート出力をPDFファイルに生成する場合、その出力を電子メール、プリンタ、OracleAS PortalおよびWebブラウザなどの、任意のPDFの宛先に配布できます。
PDF出力のドキュメントの分類(種別)は、「タイトル」、「作成者」、「件名」および「キーワード」のレポート・プロパティにより行われ、レポート・ドキュメントのカタログ化と検索に役立ちます。
フォントのサブ設定を使用すると、レポートを表示するマシンで該当するフォントが使用できるかどうかにかかわらず、PDFファイルのレンダリングに必要なフォント情報がPDFファイルに含まれます。PDFのフォントのサブ設定は、シングルバイト、マルチバイトおよびUnicodeのフォントでも機能するため、マルチバイト・レポートの作成に適しています。
Oracle Reports 10gリリース2(10.1.2)には、次のようなPDS出力の拡張機能が含まれています。
圧縮、フォントの別名の作成、フォントのサブ設定、フォントの埋込みとアクセス可能性を示すタグなど、Oracle ReportsにおけるPDFの拡張および各種機能の詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』の「Oracle ReportsでのPDFの使用」の章を参照してください。このマニュアルは、Oracle Technology NetworkのOracle Reportsドキュメントのページ(http://www.oracle.com/technology/documentation/reports.html)から入手できます。
Reports Builderでは、レポート出力を、フォーマットされたデータとすべてのオブジェクトを含むRich Text Format(RTF)ファイルに生成できます。RTFは、Microsoft Wordなどの多くの異なるワード・プロセッシング・ソフトウェア・パッケージで読み込むことができます。ソフトウェアの編集およびグラフィック機能を使用して、レポート出力を変更および拡張できます。レポート出力をRTFファイルに生成する場合、その出力を電子メール、プリンタ、OracleAS PortalおよびWebブラウザなどの、任意のRTFの宛先に配布できます。
第3.7.1項「ユーザー・インタフェースからのレポートの実行と出力」
Oracle Reportsでは、デリミタを含むレポート出力を、デリミタ付きファイル(カンマやタブで区切られたデータを含むファイルなど)に生成できます。これらのファイルは、簡単にスプレッドシートにインポートしたり、ワード・プロセッサで使用できます。
Oracle Reportsでデリミタ付き出力の生成には、次の2つのオプションがあります。
次のいずれかの方法を使用して、レポート出力内のデータ(ボイラープレートまたはフィールド・オブジェクト)を区切るデリミタ(文字または文字列)を指定できます。
DELIMITER
キーワードを使用して指定します。
セルの囲みを使用してさらにセルを区別できます。セルの囲みは、カンマやカッコなどの一連の文字で構成されます。
たとえば、レポート出力のデータにデリミタと同じ文字(たとえば、カンマ)が含まれる場合、カッコをセルの囲みに使用して、それぞれのセルを区別できます。
(1,000,000),(3,6000),(543),(2,003,500)
DelimitedData出力:
DelimitedData出力にレポートを生成すると、データのみ(レポート・データ・モデルで定義されているもの)が出力に表示されます。レイアウトで定義されているフォーマット変更は、DelimitedData出力では反映されません。
次の列プロパティを設定すると、DelimitedData出力ファイルで列名の変更や列の除外が可能です。
レポートのレイアウト情報を保持するレポート出力を生成するには、第2.8.13項「スプレッドシート出力について」を参照してください。
デリミタ付き出力:
デリミタ付き出力にレポートを生成した場合、データは、ペーパー・レイアウト・ビューのオブジェクトの位置に従って表示されます。
ID
(大文字)というラベルのフィールドである場合、Microsoft Excelでそのファイルを開くことができません。次のようなデリミタ付き出力は、Excelでのエラーの原因になります。ID, name, title, dept
ID
フィールドが含まれるデリミタ付き出力を生成する場合は、データベース列名を小文字に変更するか(つまり、id
)、フィールドの順序を並べ替えてください。
DELIMITED
出力フォーマットまたはDELIMITEDATA
出力フォーマットは、distribution.xml
ファイルや「配布」ダイアログ・ボックスでは指定できません。
第3.7.1項「ユーザー・インタフェースからのレポートの実行と出力」
10gリリース2(10.1.2)からOracle Reportsに導入されている新しい出力フォーマットを使用すると、ペーパー・レイアウト・レポートからHTMLファイルへ出力を生成し、Microsoft Excel 2000で直接開くことができます。新しいDESFORMAT=SPREADSHEET
を使用すると、次のことが可能です。
.rdf
、.xml
、.jsp
)で保存されている既存のペーパー・レイアウト・レポートからでも、rwrun
またはReports Serverクライアント(rwcgi
、rwclient
、rwservlet
)を使用して、レポート出力をスプレッドシート形式に生成できます。次の例を参照してください。
direction
およびcharset
のメタデータをレポート前値で指定する必要があります。これは、この情報が生成後の出力にデフォルトでは書き込まれないためです。たとえば、レポート前値は次のように定義できます。
<html> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=&encoding"> <body dir=&Direction bgcolor="#ffffff">
cellspacing
、cellpadding
およびwidth
などの表属性は、枠および繰返し枠の「表属性(HTML)」プロパティを使用して指定できます。
</body><table><tr><td><B> the text to be bolded </B></td><tr></table></html>
<table><tr><td><B> the text to be bolded </B></td><tr></table></body></html>
rwservlet
コマンドやrwcgi
コマンド(SHOWJOBS
など)でサポートされています。また、Enterprise Managerのジョブ・キューおよびOracle Portalのアクセス・オブジェクト定義でもサポートされています。
rwrun
またはReports Serverクライアント(rwcgi
、rwclient
、rwservlet
)とDESFORMAT=SPREADSHEET
を使用してレポートを実行できます。DESFORMAT=SPREADSHEET
を、システム・パラメータ値としてレポート定義(.rdf
ファイル)に格納することはできません。
SPREADSHEET
出力フォーマットは、distribution.xml
ファイルや「配布」ダイアログ・ボックスでは指定できません。
URLを使用してレポートのペーパー・レイアウトをMicrosoft Excel出力に生成するには(rwservlet
を使用)、次の内容を含むコマンドをコマンドラインに入力します。
http://hostname:port/reports/rwservlet?report=report_name +server=server_name+userid=db_connect_string+destype=file +desformat=spreadsheet+desname=C:¥temp¥myexcel_output.htm
新しいスプレッドシート出力機能に加えて、Oracle Reports 10gリリース2(10.1.2)より前のリリースで実装される次の方法でも、スプレッドシート出力を生成できます。
長所: デリミタ付き出力は、どんな形式(.rdf
、.xml
、.jsp
)で保存されている既存のペーパー・レイアウト・レポートからでも、Reports Builderから直接、またはコマンドラインからレポートを実行して生成できます。
短所: データのみ(レポート・データ・モデルで定義されているもの)が出力に表示され、レイアウト情報は表示されません。
rw:include
タグを追加してペーパー・レイアウトのグループ枠をJSPコードとしてWebソース・ビューに含め、レポートをJSPファイルとして保存して、レポートを配布します。この方法を実装する手順の詳細は、第29章「スプレッドシート出力のレポートの作成」を参照してください。
長所: カラーやフォントなどのフォーマットを使用して、データだけでなくレポート・レイアウトを、Webブラウザ内にMicrosoft Excel出力で生成できます。
短所: Excelで出力するには、カスタムJSPコーディングを追加する必要があります。レポートはJSPエンジンでのみ実行でき、rwservlet
では実行できません。したがって、この方法では、Microsoft Excel出力はWebブラウザ内のみで表示できます。
与えられた要件に適切なデリミタ付き出力ソリューションを選択する場合の詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』のOracleAS Reports Servicesのトラブルシューティングに関する付録にある、Microsoft Excelにおけるレポート出力の表示に関する項を参照してください。
Reports Builderでは、レポート出力を、フォーマットされたデータとすべてのオブジェクトを含むテキスト・ファイルに生成できます。レポート出力をテキストに生成し、その実行モードがキャラクタである場合(MODE=CHARACTER、またはMODEシステム・パラメータの「初期値」プロパティが「キャラクタ」に設定されている場合)、その結果は純粋なテキスト出力となり、様々なアプリケーションで読み取ることができます。実行モードがビットマップの場合(MODE=BITMAP、またはMODEシステム・パラメータの「初期値」プロパティが「ビットマップ」に設定されている場合)、その結果はPostScript出力となり、PostScript対応のアプリケーション(PostScriptプリンタなど)でのみ、読み取ったり、レンダリングしたりできます。
キャラクタ・モードのレポートを作成するには、まずビットマップ・レポートを作成してから、そのレポートをASCII(キャラクタ・モード)レポートに変換します。この処理では、キャラクタ・モード・バージョンのビットマップ・レポートが新たに作成され、元のビットマップ・レポートはそのまま変更されません。
変換後、フィールドおよびテキスト・オブジェクトの多くをサイズ変更する必要があります。また、イメージや描画などのグラフィック・オブジェクトは、キャラクタ・モードのレポートには含まれません。次に、各出力フォーマットでサポートされているアイテムをまとめます。
ビットマップ | キャラクタ・モード |
---|---|
イメージ |
ボックス |
カラー |
水平線 |
描画 |
垂直線 |
楕円/円 |
ASCIIテキスト |
イタリック・テキスト |
太字テキスト |
対角線 |
下線 |
ビットマップ・パターン |
|
マルチメディア・オブジェクト |
|
第3.5.9項「ASCII(キャラクタ・モード)レポートの作成」
第3.2.5項「ASCII(キャラクタ・モード)レポートのプロパティの設定」
第3.7.1項「ユーザー・インタフェースからのレポートの実行と出力」
Oracle Reportsでは、様々なデータ・ソースにアクセスできます。第3.15.2項「Oracle以外のデータ・ソースへのアクセス」を参照してください。
この項の各トピックでは、Reports Builderで他のデータ・ソースにアクセスする場合の情報を説明します。
Oracle Reportsオンライン・ヘルプの「プラッガブル・データ・ソース」の項には、次のトピックが含まれています。
データベース・ロールによって、エンド・ユーザーはアクセス権限を持たない表に問合せを行うレポートを実行できるようになります。たとえば、最終的なレポートには表示されなくても、給与データなどの機密情報が含まれた表にレポートが問合せを実行する場合があります。
データベース・ロールは、ランタイム環境でのみチェックされます。特別なアクセス権限を必要とする表の場合、このような権限を持たないエンド・ユーザーは、その表からデータを取り出すレポートを実行できません。しかし、レポートにデータベース・ロールを定義しておくと、そのロールの権限を持つエンド・ユーザーは、Reports Runtimeを使用してレポートを実行できます(rwrun
)。
データベース・ロールが定義されたレポートをReports Builderで開こうとすると、ロール・パスワードを入力するように求められます。一般に、この情報を所有しているのは、レポートの作成者とDBAのみです。
Oracle Net Servicesは、Oracleのリモート・データ・アクセス・ソフトウェアで、任意のネットワークでクライアントとサーバー間およびサーバー間の通信を可能にします。分散処理と分散データベースの機能がサポートされます。Oracle Net Servicesは、多くの通信プロトコルで実行され、これらを相互接続します。Oracle Net Servicesは、Net8およびSQL*Netと下位互換性があります。
以前のリリースでは、ユーザー・イグジットを使用して、Reports Builderからユーザーが記述したプログラムに制御を渡し、そこで何らかの機能を実行して、制御を再びReports Builderに戻しました。オペレーティング・システムのテキスト・ファイルからReports Builderにデータを渡したり、LONG RAWデータを操作したり、PL/SQLブロックをサポートしたり、プリンタやロボットなどのリアルタイム・デバイスを制御したりする複雑なデータ操作を実行するには、ORACLE Precompilerユーザー・イグジット、ORACLE Call Interface(OCI)ユーザー・イグジットまたは非ORACLEユーザー・イグジットを記述する必要がありました。
このリリースでは、ORA_JAVAビルトイン・パッケージとJava Importerを使用して、Javaメソッドをコールできます。これによってレポートでのユーザー・イグジットの必要性が軽減され、さらにオープンでポータブルな配置が可能になります。また、ORA_FFIビルトイン・パッケージを使用することもできます。これにより、ダイナミック・ライブラリにあるC関数をコールするための外部関数インタフェースを使用できます。これらの新しいビルトイン・パッケージが使用可能になったことにより、Oracle Reportsでは、ユーザー・イグジットの使用が推奨されなくなりました。ただし、既存のユーザー・イグジットを継続して使用できるように、現在でもメイクファイルは提供されています。
以前のリリースでは、Oracle Call Interface(OCI)により、Oracle Reportsの実行可能ファイルをコールするために、各自の3GLプログラムでコールする一連の標準プロシージャが提供されました。これらのCで書かれたプロシージャは、Reports Builder、Reports RuntimeおよびReports Converterの各実行可能ファイルに付属しています。そのため、たとえば、Pro*FORTRANプログラムからReports Builderレポートを実行するには、Reports Runtimeの実行可能ファイルを使用して、各自のプログラムにRWCRRBプロシージャのコールを追加し、レポートを実行していました。
このリリースでは、OCIが廃止されています。かわりに、rwclientコマンドライン・インタフェースまたはJSPタグ・ライブラリを使用します。
この項の各トピックでは、Reports Builderのデバッグ・レポートについて説明します。
アプリケーションのデバッグは、アプリケーション・エラーを識別し、修正する反復プロセスです。一般に、アプリケーションのデバッグを適切に行うには、誤りのあるコードを素早く識別し、特定することが不可欠です。
PL/SQLインタプリタは、デバッグの作業領域で、ソース・コードを表示し、デバッグ・アクションを作成し、プログラム・ユニットを実行し、インタプリタ・コマンド、PL/SQLおよびSQL文を実行できます。
PL/SQLインタプリタでは、デフォルトで、2つのペイン(「ソース」ペインと「インタプリタ」ペイン)が常に開いています。
次のようなデバッグ機能があります。
PL/SQLインタプリタの「ソース」ペインには、現在「オブジェクト・ナビゲータ」ペインで選択されているプログラム・ユニットの読取り専用コピーが表示されます。
左側のマージンにある番号は、表示されているプログラム・ユニットの行番号に対応します。
また、マージンには、次に示す記号が表示されることもあります。
記号 | 説明 |
---|---|
| |
現在のソース位置を指定します。 |
=> |
現在のスコープ位置を指定します。 |
- |
現在の実行位置を指定します(現在のスコープ位置と異なる場合)。 |
B(n) |
ブレークポイントの位置を指定します。nは対応するデバッグ・アクションIDです。この記号は、行番号列に表示されます。 |
T(n) |
トリガーの位置を指定します。nは対応するデバッグ・アクションIDです。この記号は、行番号列に表示されます。 |
PL/SQLインタプリタを使用する場合、次のコマンドを実行できます。
PL/SQLインタプリタをレポート・コード(トリガー、ユーザー命名プログラム・ユニット、ライブラリなど)から起動するには、コードでデバッグ・アクションを作成します。これらは、PL/SQLプログラム・ユニットの実行を追跡して、それを監視できるようにする命令です。
作成した各デバッグ・アクションには、自動的に一意の数値IDが割り当てられます。デバッグ中に、このIDを参照して、Reports Builderのデバッグ・コマンドで特定のデバッグ・アクションを参照、表示または変更できます。
1つ以上のデバッグ・アクションに関する詳細情報を表示できます。詳細情報には、そのID、ソースの位置、および有効化されているかどうかなどの情報が含まれます。また、特定のデバッグ・アクションを一時的に無効化し、必要に応じて後でもう一度有効化できます。
デバッグ・アクションには、ブレークポイントとデバッグ・トリガーの2種類があります。
ブレークポイントは、プログラム・ユニットの特定のソース行で実行を中断し、PL/SQLインタプリタに制御を渡します。
ブレークポイントを作成して、特定のデバッグ領域を識別します。たとえば、ブレークポイントを行10と行20に作成すると、この領域内のコードがデバッグされます。
ブレークポイントでは、ブレーク・ポイントを指定した行に到達する直前に中断が発生します。この時点で、PL/SQLインタプリタの機能を使用して、プログラムの状態を検査または変更できます。完了したら、GOコマンドまたはSTEPコマンドで実行を再開するか、RESETコマンドを使用して実行を強制終了します。
デバッグ・トリガーは、一般的な形式のデバッグ・アクションで、PL/SQLコードのブロックをプログラム・ユニット内の特定のソース行に関連付けます。デバッグ・トリガーを検出すると、Reports Builderはデバッグ・トリガー・コードを実行します。
デバッグ・トリガーを作成して、次のいずれかの場合のデバッグ時にPL/SQLコードのブロックを実行します。
デバッグ・トリガーは、特に条件付きブレークポイントとして有効です。トリガー内から例外DEBUG/BREAKをコールできます。たとえば、次のデバッグ・トリガーは、my_proc
の行10に条件付きブレークポイントを設定します。これは、ローカルNUMBER変数my_sal
が5,000を超えた場合にのみ条件と一致します。
PL/SQL>line 10 is +> IF Debug.Getn('my_sal') > 5000 THEN +> Raise Debug.Suspend; +> END IF;
PL/SQLインタプリタでは、次の方法で、デバッグ・アクション(ブレーク・ポイントとデバッグ・トリガー)を作成できます。
デバッグ・アクションを作成する場合、実行可能なプログラム・ユニットのソース行に、ブレークポイントまたはデバッグ・トリガーを連結します。ソース行は、PL/SQLコンパイラがコードを生成する1つ以上の文が含まれる場合に実行可能とみなされます。たとえば、代入文とプロシージャ・コールが含まれたソース行は実行可能ですが、コメント、空白行、宣言またはNULL文が含まれたソース行は実行可能ではありません。
現在の実行位置は、実行する次のPL/SQLソース行を指定します。これは、一般にプログラム・カウンタ(PC)と呼ばれているものに相当します。
プログラムの実行中に制御がPL/SQLインタプリタに渡された場合(たとえば、ブレークポイントに達した場合やステップ実行で行っている場合)、PL/SQLインタプリタの「ソース」ペインには、現在の実行位置に対応するソース行が自動的に表示されます。
現在の実行位置を手動で表示するには、「インタプリタ」ペインでLISTコマンドを使用します。
たとえば、次のように入力します。
.LIST PC
これで、「ソース」ペインに現在の実行位置が表示されます。
現在のスコープ位置は、PL/SQLインタプリタがローカル変数およびパラメータを検索する場所を指示します。この位置は、スタック上での1つのPL/SQLサブプログラムの現在の実行位置に対応します。
プログラム・ユニットの実行が中断するたびに(たとえば、デバッグ・アクションによって)、スコープ位置はスタックの一番下にあるサブプログラムの実行位置に初期化されます。
実行が中断された後で、現在のスコープ位置を、スタック上の別の枠に変更できます。これにより、呼び出し連鎖内の別のサブプログラムのローカル変数を表示できます。
デバッグ・アクションがプログラムの実行を中断すると、PL/SQLインタプリタが制御を受け取り、デバッグ・レベルを設定します。デバッグ・レベルでは、コマンドやPL/SQL文を入力し、中断されたプログラムの状態を検査および変更したり、実行を再開したりできます。
デバッグ・レベルでインタラクティブに入力したPL/SQLコード自体も中断できるので(たとえば、別のブレークポイントを検出した場合)、デバッグ・レベルをネストすることができます。デバッグ・レベルを区別しやすくするため、レベルには番号が付けられます。最も深くネストされたレベルには、一番大きな番号が割り当てられます。番号は、最も外側のレベルでゼロから始まります。
0番または最も外側のレベルは通常、トップ・レベルと呼ばれます。トップ・レベルは、プログラム・ユニットが最初にコールされた最も外側のレベルであるため、関連付けられたプログラム状態はありません。トップ・レベルからコールされたコードが中断された場合、デバッグ・レベル1が設定されます。同様に、デバッグ・レベル1からコールされたコードが中断されると、デバッグ・レベル2が設定され、後に続きます。
PL/SQLインタプリタのコマンド・プロンプトには現在のデバッグ・レベルが反映されます。PL/SQLインタプリタがトップ・レベルより下のレベルへ入ると、プロンプトには、現在のデバッグ・レベル番号を含むプリフィックスが表示されます。たとえば、PL/SQLインタプリタのコマンド・プロンプトは、デバッグ・レベル1で次のように表示されます。
(debug 1)PL/SQL>
実行時に、現在のスタック上にない任意のプログラム・ユニット、メニュー項目コマンドまたはトリガーを変更し、コンパイルできます。
実行時のコード変更はReports Builderには通知されませんが、最終的な修正の実装へ戻る前に、可能な修正をインタラクティブにテストすることができます。
|
Copyright © 2003, 2005 Oracle. All Rights Reserved. |
|