ヘッダーをスキップ

Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス
10g リリース2(10.2)

B19257-01
目次
目次
索引
索引

戻る 次へ

PL/SQLの新機能

ここでは、PL/SQL 10g リリース1(10.1)の新機能について説明し、追加情報の参照先を示します。

次のPL/SQLの新機能について説明します。

Oracle Database 10g リリース2(10.2)のPL/SQLの新機能

Oracle Database 10g リリース2(10.2)の新機能は、次のとおりです。

条件付きコンパイル

この機能を使用すると、コンパイル時に評価される条件の値に応じて、特定のコードをインクルードできます。たとえば、条件付きコンパイルを使用すると、特定のデータベース・リリースに対して、PL/SQLアプリケーションのどのPL/SQL機能を使用するかを指定できます。アプリケーションの最新のPL/SQLの機能は、新しいデータベース・リリースで実行できると同時に、その同じアプリケーションが以前のデータベース・リリースと互換性を持つように、これらの機能に条件を付けることができます。また、条件付きコンパイルは、本番環境でデバッグ作業を行わずに、開発環境でデバッグを行う時に役立ちます。「条件付きコンパイル」を参照してください。

動的なラップ

DBMS_DDLのwrapサブプログラムは、実装の細部をユーザーから隠ぺいするために、Oracleデータベースに生成したPL/SQLコード・ユニットを動的に不明瞭化(非表示)にします。付録A「PL/SQLのソース・コードの不明瞭化」を参照してください。

PLS_INTEGERデータ型の更新

PLS_INTEGERデータ型の範囲は、32ビットで表すと、-2147483648〜2147483647です。「PLS_INTEGERデータ型」を参照してください。

Oracle Database 10g リリース1(10.1)のPL/SQLの新機能

Oracle Database 10g リリース1(10.1)のPL/SQLの新機能は、次のとおりです。

パフォーマンスの向上

PL/SQLのパフォーマンスは全体的に向上しています。ほとんどのパフォーマンスは自動的に向上し、何もする必要はありません。PL/SQLコードのグローバル最適化は、PLSQL_OPTIMIZE_LEVEL初期化パラメータで制御されます。デフォルトの最適化レベルを使用すると、様々なPL/SQL操作のパフォーマンスが向上します。ほとんどのユーザーは、デフォルトの最適化レベルを変更する必要がありません。

具体的には、整数パフォーマンスの向上、式値の再利用、コードの分岐の単純化、一部のライブラリ・コールのパフォーマンスの向上および到達不能コードの排除が実現されています。

新しいデータ型BINARY_FLOATおよびBINARY_DOUBLEを使用すると、科学的データの処理など、大量の演算を行うアプリケーションのパフォーマンスが向上します。

設定する初期化パラメータ数の減少、必要なコンパイラ構成の削減、データベースに格納されたオブジェクト・コード、およびOracle Real Application Clusters環境との互換性によって、PL/SQLのネイティブ・コンパイルがより統合され、簡単になっています。

FORALL文を使用すると、削除された要素を含む結合配列およびネストした表を処理できます。このパフォーマンス構成を以前より多くの場面で使用でき、これによって1つのコレクションから別のコレクションに要素をコピーする必要がなくなります。

PL/SQLのネイティブ・コンパイルの拡張

ネイティブ・コンパイル用の初期化パラメータの構成およびコマンドの設定が簡略化されています。必要なパラメータはPLSQL_NATIVE_LIBRARY_DIRのみです。コンパイラ、リンカーおよびmakeユーティリティに関連するパラメータは廃止されています。ネイティブ・コンパイルは、PLSQL_COMPILER_FLAGSパラメータの1つのオプション(廃止)ではなく、専用のPLSQL_CODE_TYPE初期化パラメータで有効または無効にできます。

コンパイルおよびリンク用のコマンドとオプションが含まれているのは、makeファイルではなく、$ORACLE_HOME/plsql/spnc_commandsファイルです。新しいスクリプトdbmsupgnv.sqlは、データベース内のすべてのPL/SQLモジュールをNATIVEとして再コンパイルします。dbmsupgin.sqlスクリプトは、データベース内のすべてのPL/SQLモジュールをINTERPRETEDとして再コンパイルします。

パッケージ本体とその仕様部は、同じネイティブ・コンパイル設定でコンパイルする必要がありません。たとえば、パッケージ本体をネイティブにコンパイルしてパッケージ仕様部を解釈したり、逆に本体を解釈して仕様部をネイティブにコンパイルできます。

ネイティブにコンパイルされたサブプログラムはデータベースに格納され、対応する共有ライブラリは必要に応じて自動的に抽出されます。共有ライブラリのバックアップ、古い共有ライブラリのクリーンアップ、または共有ライブラリが誤って削除された場合に発生する状況を考慮する必要はありません。

ネイティブ・コンパイル中に発生したエラーは、SQL*PlusコマンドSHOW ERRORSを使用して、USER_ERRORSディレクトリ・ビューに表示できます。

「システム固有の実行のためのPL/SQLコードのコンパイル」を参照してください。

非連続索引のFORALLサポート

FORALL文にINDICES OFおよびVALUES OF句を指定して、非連続索引値を反復できます。たとえば、ネストした表から要素を削除した後でも、FORALL文でそのネストした表を使用できます。「FORALL文の使用」を参照してください。

新しいIEEE浮動小数点型

新しいデータ型BINARY_FLOATおよびBINARY_DOUBLEは、IEEE 754形式で浮動小数点数を表します。これらの型は、浮動小数点にIEEE 754標準が使用される他のプログラムおよび言語とデータを交換する、科学的な計算に役立ちます。多くのコンピュータ・システムがシステム固有のプロセッサ命令を介してIEEE 754浮動小数点の操作をサポートするため、これらの型は浮動小数点データを伴う集中的な計算に効果的です。

これらの型は、1.0f3.141dなどの数値リテラル、平方根や剰余などの算術演算、例外処理、および非数値(NaN)や無限大などの特殊な値をサポートします。

サブプログラムのオーバーロードの規則が拡張されており、PLS_INTEGERNUMBERBINARY_FLOATおよびBINARY_DOUBLEパラメータを操作する1つのファンクションの様々なバージョンを使用して数学ライブラリを記述できます。「PL/SQLの数値型」を参照してください。

BINARY_INTEGERデータ型への変更

Oracle 10g リリース1(10.1)以降では、BINARY_INTEGERデータ型が変更され、PLS_INTEGERと同じになりました。そのため、これらのデータ型を同じように使用できます。「BINARY_INTEGERデータ型」を参照してください。


注意:

Oracle 10g リリース1(10.1)より前では、PLS_INTEGERの方がBINARY_INTEGERよりも効率的なため、古いデータベース・リリースでコードを実行するときには、PLS_INTEGERデータ型を使用することをお薦めします。ただし、Oracle 10g リリース1(10.1)より前のリリースでは、PLS_INTEGERデータ型とBINARY_INTEGERデータ型でのオーバーフローの動作が異なります。Oracle 10g リリース1(10.1)より前では、2つのBINARY_INTEGERのデータ型で計算を実行してBINARY_INTEGERの範囲値をオーバーフローした場合、結果をNUMBERデータ型に代入し、オーバーフロー例外は発生しませんでした。「PLS_INTEGERデータ型」を参照してください。 


オーバーロードの改善

様々な数値引数を受け入れるサブプログラムをオーバーロードして、様々なデータ型に特化した各サブプログラムのバージョンを使用して、数学ライブラリを記述できます。「数値型のオーバーロードのガイドライン」を参照してください。

ネストした表の拡張

PL/SQLに定義されたネストした表には、以前より多くの操作を実行できます。ネストした表が同じかどうかの比較、要素がネストした表のメンバーであるかどうかのテスト、1つのネストした表が別のネストした表のサブセットであるかどうかのテスト、和集合や共通集合などの集合操作の実行など、様々な操作を行うことができます。「コレクションの代入」および「コレクションの比較」を参照してください。

コンパイル時の警告

サブプログラムのコンパイルで曖昧な結果が生成されたり、非効率な構造体が使用された場合、Oracleでは警告を発行できます。これらの警告は、PLSQL_WARNINGS初期化パラメータおよびDBMS_WARNINGパッケージを介して選択的に有効または無効にできます。「PL/SQLのコンパイル時の警告の概要」を参照してください。

文字列リテラルの引用符付けメカニズム

文字列リテラル内の一重引用符を二重にするかわりに、リテラル用に独自のデリミタ文字を指定して、文字列内に一重引用符を使用することができます。「文字列リテラル」を参照してください。

CLOBとNCLOB間での暗黙的変換

CLOBからNCLOB、またはNCLOBからCLOBに暗黙的変換を実行できます。この操作はコストがかかる可能性があるため、TO_CLOBおよびTO_NCLOBファンクションを使用して保全性を継続することが有効である場合があります。

正規表現

UNIX形式の正規表現に精通しているユーザーは、問合せおよび文字列操作の実行に正規表現を使用できます。SQL問合せにREGEXP_LIKE演算子を使用し、通常INSTRREPLACEおよびSUBSTRを使用する場所にREGEXP_INSTRREGEXP_REPLACEおよびREGEXP_SUBSTRファンクションを使用します。「PL/SQLの組込みファンクションのまとめ」および「組込み文字列ファンクションの使用」を参照してください。

フラッシュバック問合せのファンクション

SCN_TO_TIMESTAMPおよびTIMESTAMP_TO_SCNファンクションを使用すると、ある時点でのデータベース状態を表すシステム変更番号と日時の間の変換を実行できます。例3-2「SCN_TO_TIMESTAMPおよびTIMESTAMP_TO_SCNファンクションの使用」を参照してください。「PL/SQLの組込みファンクションのまとめ」を参照してください。


戻る 次へ
Oracle
Copyright © 2005 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引