PL/SQLサンプル・プロシージャ

Oracle TimesTenでのPL/SQLサポートはTimesTenデータベース内でシームレスに統合されており、サポートされるすべてのTimesTenプログラミング・インタフェースから使用できます。TimesTen PL/SQLでは、Oracle Databaseでサポートされるものと同じ言語構文とセマンティクスが使用されます。このリリースでは、パフォーマンス重視のOLTPアプリケーションを対象としたPL/SQLパッケージのサブセットを使用できます。サポートされるPL/SQL機能の詳細は、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』を参照してください。

次のPL/SQLサンプル・プロシージャは、quickstart/sample_code/plsqlディレクトリにあります。

  プロシージャ 説明
   basics.sql このPL/SQLスクリプトは、ttIsqlを介したTimesTen PL/SQLの機能について、その概要を示します。

表示される機能は、次のとおりです。

  • SET SERVEROUTPUT ON
  • ストアド・プロシージャの作成
  • ブロックからのストアド・プロシージャの実行
  • SHOW ERRORを使用したエラーの出力
  • INPUTおよびOUTPUTバインド変数の例
  • TimesTen SYSTEM表を問い合せるPL/SQL
  • PROCEDURESコマンドを使用した、データベースのストアド・プロシージャの表示
  • PL/SQLオブジェクトの説明
  • USER_OBJECTSビューの表示

このPL/SQLスクリプトは、ttIsqlから実行する必要があります。

  case_procedures.sql このPL/SQLブロックは、CASE文およびCASE式の使用方法を示します。PL/SQL CASE文には、単純なCASE文および検索CASE文が含まれます。CASE式には、単純なCASE式、検索CASE式、および構文上の短縮形としてCOALESCEとNULLIFの2つが含まれています。

比較のために、一連のIF文またはSQL DECODE関数など、従来の言語要素を使用する各ストアド・プロシージャも実装されています。

このPL/SQLブロックはttIsqlから実行する必要があります。また、出力は、DBMS_OUTPUTを使用してコンソールに表示されます。

  cursor_loop.sql このPL/SQLブロックでは、CURSORとLOOPを使用して月給(給与とコミッションの合計)が2000ドルを超えるすべての従業員を検索して、条件付きで挿入します。%ROWTYPE型の変数を使用して行がフェッチされます。EXITを使用してLOOPを終了します。

このプログラムはttIsqlまたはTimesTen APIから実行できます。また、出力はTEMP表に挿入されます。このプログラムを実行する前後にTEMP表の値を確認してください。

  cursor_loop_types.sql このPL/SQLブロックでは、%TYPEデータ型を使用してデータベース列と同じ型の変数を宣言する方法が示されています。この型はCURSORで使用され、フェッチされたデータで単純な演算が実行されます。WHEN %NOTFOUNDを使用してLOOPを終了します。

このプログラムはttIsqlまたはTimesTen APIから実行できます。また、出力はTEMP表に挿入されます。このプログラムを実行する前後にTEMP表の値を確認してください。

  cursor_loop_types2.sql このPL/SQLブロックでは、CURSORに基づくFOR-LOOPの使用方法が示されています。CURSORの結果セットを使用してLOOPを終了します。

このプログラムはttIsqlまたはTimesTen APIから実行できます。また、出力はTEMP表に挿入されます。このプログラムを実行する前後にTEMP表の値を確認してください。

  cursor_update_logic.sql このプログラムでは、ACTION表に格納されている指示に基づいてACCOUNT表が変更されます。ACTION表の各行には、処理対象の口座番号、実行されるアクション(挿入、更新または削除)、口座の更新後の金額およびタイム・タグが含まれます。

挿入時にアカウントがすでに存在する場合は、挿入ではなく更新が実行されます。更新時にアカウントが存在しない場合は、挿入によって作成されます。削除時に行が存在しない場合、アクションは実行されません。

このプログラムはttIsqlまたはTimesTen APIから実行できます。また、出力はACCOUNTS表およびACTION表に送られます。このプログラムを実行する前後に、ACTION表およびACCOUNTS表の値を確認してください。

  inner_loop_block.sql

このPL/SQLブロックでは、ブロックの構造と有効範囲の規則が示されています。外側のブロックでは、XとCOUNTERという2つの変数が宣言され、4回ループ処理が行われます。このループ内にサブブロックがあり、ここでもXという変数が宣言されています。TEMP表に挿入される値によって、この2つの変数Xが実際に異なることが示されます。

このプログラムはttIsqlまたはTimesTen APIから実行できます。また、出力はTEMP表に挿入されます。このプログラムを実行する前後にTEMP表の値を確認してください。

  loop_insert.sql このPL/SQLサンプル・ブロックでは、単純なFORループを使用して表に10行挿入されます。ループ索引の値、カウンタ変数の値、および2つ文字列のうちいずれかが挿入されます。挿入される文字列は、ループ索引の値に応じて決まります。

このプログラムはttIsqlまたはTimesTen APIから実行できます。また、出力はTEMP表に挿入されます。このプログラムを実行する前後にTEMP表の値を確認してください。

  select_exception.sql このサンプル・ブロックでは、PL/SQLの例外処理の例が示されます。

RATIO表のX列とY列の比率が計算されます。比率が0.72より大きい場合は、ブロックによってその比率がRESULT_TABLEに挿入されます。それ以外の場合は-1が挿入されます。分母が0(ゼロ)の場合はZERO_DIVIDEが呼び出され、0(ゼロ)がRESULT_TABLEに挿入されます。

このプログラムはttIsqlまたはTimesTen APIから実行できます。また、出力はRATIO表に挿入されます。このプログラムを実行する前後にRATIO表の値を確認してください。

  update_inventory.sql このPL/SQLブロックでは、テニス・ラケットの注文が処理されます。在庫に1本以上のラケットが残っている場合にのみ、在庫のラケットの数量を減らします。

このプログラムはttIsqlまたはTimesTen APIから実行できます。また、出力はINVENTORY2表およびPURCHASE_RECORD表に送られます。このプログラムを実行する前後に、INVENTORY2表およびPURCHASE_RECORD表の値を確認してください。

インストールされているプラットフォームでサンプル・プログラムをコンパイルして実行する方法については、「コンパイルおよび実行」を参照してください。

TimesTenでのPL/SQLサポートの詳細は『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』を参照してください。