PL/SQLサンプル・コードを実行する方法

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

重要な前提条件

1. サンプル・データベースとユーザー・アカウントを設定する

次のbuild_sampledbスクリプトを1回実行して、サンプル・データベースおよびユーザー・アカウントを設定する必要があります。

Windows:   > cd quickstart/sample_scripts/createdb
> build_sampledb.bat
UNIX/Linux:   $ cd quickstart/sample_scripts/createdb
$ ./build_sampledb.sh

2. サンプル・プログラムをコンパイルおよび実行するための環境を設定する

各端末セッションに対して、次のスクリプトを実行する必要があります。

Windows:   > quickstart/ttquickstartenv.bat
UNIX/Linux:   $ . quickstart/ttquickstartenv.sh または
$ source quickstart/ttquickstartenv.csh

PL/SQLサンプル・コードを実行する方法

ttIsqlを使用してPL/SQLサンプル・コードを実行するには、次のコマンドを実行します。

$ttIsql "dsn=<name>"
> @<plsql_filename>;

または

ttIsql -f <filename> <dsn>

例:

$ttIsql "dsn=sampledb_1121; uid=appuser"
>enter the password for appuser
> @basics.sql;

$ttIsql -f basics.sql "dsn=sampledb_1121; uid=appuser"

  プロシージャ 説明
   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開発者ガイド』を参照してください。