ヘッダーをスキップ
Pro*COBOLプログラマーズ・ガイド
11g リリース1(11.1)
E05690-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

E 埋込みSQL文およびプリコンパイラ・ディレクティブ

この付録では、SQL92の埋込みSQL文とディレクティブ、およびOracle9iの埋込みSQL拡張機能を説明します。これらの文およびディレクティブをソース・コードで使用するときは、キーワードEXEC SQLを前に付けます。

注意: この付録では、非埋込みSQLと構文が異なる文のみ説明します。非埋込みSQL文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

この付録の構成は、次のとおりです。

プリコンパイラ・ディレクティブおよび埋込みSQL文の概要

埋込みSQL文は、DDL、DMLおよびトランザクション制御文を手続き型言語プログラムに挿入します。 Oracleプリコンパイラでは、埋込みSQLをサポートしています。表E-2は、埋込みSQL文およびディレクティブの機能の概要です。

表E-2の「ソース/型」列は、ソース/型の形式で、次のように記載されています。

表E-1 「ソース/型」列の意味

SQL文 ディレクティブ

ソース

SQL92標準SQL(S)またはOracleの拡張機能(O)

実行文(E)またはディレクティブ(D)


表E-2 プリコンパイラ・ディレクティブおよび埋込みSQL文および句

EXEC SQL文 ソース/型 用途

ALLOCATE

O/E

カーソル変数、LOBロケータまたはROWIDにメモリーを割り当てます。

ALLOCATE DESCRIPTOR

S/E

記述子をANSI動的SQLに割り当てます。

CALL

S/E

ストアド・プロシージャをコールします。

CLOSE

S/E

カーソルを使用禁止にします。

COMMIT

S/E

データベースの変更をすべて確定します。

CONNECT

O/E

データベースのインスタンスにログインします。

CONTEXT ALLOCATE

O/E

メモリーをSQLLIBランタイム・コンテキストに割り当てます。

CONTEXT FREE

O/E

メモリーをSQLLIBランタイム・コンテキストから解放します。

CONTEXT USE

O/E

SQLLIBランタイム・コンテキストを指定します。

DEALLOCATE DESCRIPTOR

S/E

記述子領域の割当てを解除し、メモリーを解放します。

DECLARE CURSOR

S/D

問合せに対応付けてカーソルを宣言します。

DECLARE DATABASE

O/D

後続の埋込みSQL文でアクセスされるデフォルト以外のデータベースの識別子を宣言します。

DECLARE STATEMENT

S/D

SQL文にSQL変数名を割り当てます。

DECLARE TABLE

O/D

Oracleプリコンパイラで埋込みSQL文の意味検査に使用される表構造を宣言します。

DELETE

S/E

表またはビューの実表から行を削除します。

DESCRIBE

S/E

記述子(ホスト変数の説明を保持している構造体)を初期化します。

DESCRIBE DESCRIPTOR

S/E

ANSI SQL文の情報を取得し、記述子に格納します。

ENABLE THREADS

O/E

複数のスレッドをサポートするプロセスを初期化します。

EXECUTE...END-EXEC

O/E

無名PL/SQLブロックを実行します。

EXECUTE

S/E

準備済の動的SQL文を実行します。

EXECUTE DESCRIPTOR

S/E

ANSI動的SQLを使用して準備済の文を実行します。

EXECUTE IMMEDIATE

S/E

ホスト変数を持たないSQL文を準備して実行します。

FETCH

S/E

問合せで選択した行を取り出します。

FETCH DESCRIPTOR

S/E

ANSI動的SQLを使用する問合せにより、選択された行を取り出します。

FREE

S/E

カーソル変数、LOBロケータまたはROWIDが使用するメモリーを解放します。

GET DESCRIPTOR

S/E

ANSI SQLの記述子領域の情報をホスト変数に移動します。

INSERT

S/E

表またはビューの実表に行を追加します。

LOB APPEND

O/E

LOBを別のLOBの最後に追加します。

LOB ASSIGN

O/E

LOBまたはBFILEロケータを別のロケータに割り当てます。

LOB CLOSE

O/E

オープンされているLOBまたはBFILEをクローズします。

LOB COPY

O/E

LOB値の全部または一部を別のLOBにコピーします。

LOB CREATE TEMPORARY

O/E

一時LOBを作成します。

LOB DESCRIBE

O/E

LOBから属性を取り出します。

LOB DISABLE BUFFERING

O/E

LOBバッファリングを使用禁止にします。

LOB ENABLE BUFFERING

O/E

LOBバッファリングを有効にします。

LOB ERASE

O/E

指定されたオフセットから始まる指定された量のLOBデータを消去します。

LOB FILE CLOSE ALL

O/E

オープンしているBFILEをすべてクローズします。

LOB FILE SET

O/E

BFILEロケータのDIRECTORYおよびFILENAMEを設定します。

LOB FLUSH BUFFER

O/E

LOBのバッファをデータベース・サーバーに書き込みます。

LOB FREE TEMPORARY

O/E

LOBロケータ用に一時領域を解放します。

LOB LOAD

O/E

BFILEの全部または一部を、内部LOBにコピーします。

LOB OPEN

O/E

読込みまたは読取り/書込みアクセスするために、LOBまたはBFILEをオープンします。

LOB READ

O/E

LOBまたはBFILEの一部をバッファに読み込みます。

LOB TRIM

O/E

LOB値を切り捨てます。

LOB WRITE

O/E

バッファの内容をLOBに書き込みます。

OPEN

S/E

カーソルに対応付けられた問合せを実行します。

OPEN DESCRIPTOR

S/E

ANSI動的SQLのカーソルに対応付けられた問合せを実行します。

PREPARE

S/E

動的SQL文を解析します。

ROLLBACK

S/E

カレント・トランザクションを終了し、すべての変更を破棄します。

SAVEPOINT

S/E

後でロールバックする位置をトランザクション内に指定します。

SELECT

S/E

選択した値をホスト変数に割り当てて、1つ以上の表、ビューまたはスナップショットからデータを取り出します。

SET DESCRIPTOR

S/E

ホスト変数からANSI SQL記述子領域に情報を設定します。

UPDATE

S/E

表またはビューの実表の既存の値を変更します。

VAR

O/D

デフォルトのデータ型をオーバーライドして、特定のOracle9iの外部データ型をホスト変数に割り当てます。

WHENEVER

S/D

エラー状態および警告状態の処置を指定します。


文記述子

ディレクティブおよび文はアルファベット順で示します。各コマンドの説明には、次の項目があります。

ディレクティブ 説明
用途 コマンドの基本的な用途を示します。
前提条件 必要な権限、および文を使用する前に実行する必要のある手順を示します。特記していないかぎり、ほとんどの文では、データベースがユーザーのインスタンスによってオープンされている必要があります。
構文 文のキーワードおよびパラメータの構文図を示します。
キーワードおよびパラメータ 各キーワードおよびパラメータの用途を示します。
使用上の注意 文の使用方法および条件を示します。
前提条件 必要な権限、および文を使用する前に実行する必要のある手順を示します。特記していないかぎり、ほとんどの文では、データベースがユーザーのインスタンスによってオープンされている必要があります。
構文 文のキーワードおよびパラメータの構文図を示します。

構文図の読み方

埋込みSQLの構文は、わかりやすいように構文図を使用して説明します。構文図とは、有効な構文を示す図です。

構文図は、左から右に矢印が指す方向にたどってください。

文のキーワードは、四角形の中に大文字で表記されています。これらの文字は、四角形の中に表示されているとおり正確に入力してください。パラメータは、楕円形の中に小文字で表記されています。パラメータには変数が使用されます。演算子、デリミタおよび終了記号は、円の中に表示されています。

構文図に複数のパスがある場合は、任意のパスを選択できます。

キーワード、演算子またはパラメータの選択肢が複数ある場合は、オプションを縦に並べて示します。次の例では、まず縦方向を選択した後、横方向に進めます。

構文図
first.gifの説明

この図は、次の文がすべて有効であることを示しています。

EXEC SQL WHENEVER NOT FOUND ...
EXEC SQL WHENEVER SQLERROR ...
EXEC SQL WHENEVER SQLWARNING ...

文の終了記号

Pro*COBOL EXEC SQLの構文図はすべて、文がトークンEND-EXECで終了するものと解釈してください。

必須のキーワードおよびパラメータ

必須のキーワードおよびパラメータは、単一または代替の選択肢を縦に並べた状態で示します。必須のキーワードまたはパラメータが1つしかない場合は、メイン・パス、つまり現在たどっている横線上に示します。次の例では、cursorは必須パラメータです。

必須のキーワードおよびパラメータ
reqp.gifの説明

したがって、EMPCURSORの名前のカーソルがある場合、前述の構文図によると次の文は有効です。

EXEC SQL CLOSE EMPCURSOR END-EXEC.

複数のキーワードまたはパラメータがメイン・パス上に縦に並んでいる場合は、その中のいずれかが必須になります。つまり、キーワードやパラメータを1つ選択する必要がありますが、それはメイン・パス上にあるものでなくてもかまいません。次の例では、4つのアクションのうち1つを選択する必要があります。

構文図
reqp1.gifの説明

オプションのキーワードおよびパラメータ

キーワードおよびパラメータがメイン・パスの上に並べられている場合は、オプションです。次の例では、上方向にたどらずに、メイン・パスを続けることができます。

オプションのキーワードおよびパラメータ
optional.gifの説明

この図では、oracle2の名前のデータベースが存在する場合、次の文はすべて有効です。

     EXEC SQL ROLLBACK END-EXEC.
     EXEC SQL ROLLBACK WORK END-EXEC.
     EXEC SQL AT ORACLE2 ROLLBACK END-EXEC.

構文ループ

ループは、その中の構文を何回でも繰り返せることを示します。次の例では、column_nameがループの中にあります。このため、列名を1つ選択した後で、繰り返し戻って別の列名を選択できます。

構文ループ
syntax.gifの説明

DEBIT、CREDITおよびBALANCEが列名の場合、この図では次の文がすべて有効です。

EXEC SQL SELECT DEBIT INTO ...
EXEC SQL SELECT CREDIT, BALANCE INTO ...
EXEC SQL SELECT DEBIT, CREDIT, BALANCE INTO ...

複数パーツの図

複数パーツの図では、メイン・パスがすべて端から端まで続いていると考えます。次の例は2パーツの図です。

複数パーツの図
part.gifの説明

この図は、次の文が有効であることを示しています。

     EXEC SQL PREPARE statement_name FROM :host_string END-EXEC.

Oracleオブジェクト名

表および列などのOracleデータベース・オブジェクトの名前は、30文字以内であることが必要です。先頭文字は英文字であることが必要ですが、残りの文字には、英文字、数字、ドル記号($)、ポンド記号(#)およびアンダースコア(_)を任意に組み合せて使用できます。

ただし、名前を二重引用符(")で囲むと、有効な文字を任意に組み合せて使用できます。この場合、空白は有効な文字ですが、引用符は無効です。

Oracleの名前は、引用符で囲んだ場合を除いて大/小文字の区別がありません。

ALLOCATE(実行可能埋込みSQL拡張機能)

用途

PL/SQLブロックで参照するカーソル変数、LOBロケータまたはROWIDを割り当てます。

前提条件

SQL-CURSOR型のカーソル変数(第6章「埋込みPL/SQL」を参照)は、カーソル変数のメモリーを割り当てる前に宣言する必要があります。

構文

ALLOCATE
allocob.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
cursor_variable SQL_CURSOR型のカーソル変数
host_ptr ROWIDの場合はSQL_ROWID型、LOBの場合はSQL-BLOB、SQL-CLOBまたはSQL-NCLOB型の変数

使用上の注意

カーソルが静的であるのに対して、カーソル変数は特定の問合せに結び付けられていないため、動的です。カーソル変数は、型の互換性のある任意の問合せに対してオープンできます。

この文の詳細は、『Oracle Database PL/SQL言語リファレンス』および『Oracle Database SQL言語リファレンス』を参照してください。

この例では、ALLOCATE文の使用方法を示します。

       ...
 01  EMP-CUR       SQL-CURSOR.
 01  EMP-REC.
     ...
     EXEC SQL ALLOCATE :EMP-CUR END-EXEC.
     ...

関連項目

CLOSE(実行可能埋込みSQL)

EXECUTE(実行可能埋込みSQL)

FETCH(実行可能埋込みSQL)

FREE(実行可能埋込みSQL拡張機能)

ALLOCATE DESCRIPTOR(実行可能埋込みSQL)

用途

記述子を割り当てるANSI動的SQL文です。

前提条件

なし

構文

ALLOCATE DESCRIPTOR
alldesc.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
array_size

integer

処理される行数を格納するホスト変数。

処理される行数。

descriptor_name

descriptor name

処理される行数を格納するホスト変数。

処理される行数。

GLOBAL | LOCAL LOCAL(デフォルト)はファイルのスコープです。GLOBALはアプリケーションのスコープです。
WITH MAX integer ホスト変数の最大数。デフォルトは100です。

使用上の注意

DYNAMIC=ANSIプリコンパイラ・オプションを使用してください。このコマンドの詳細は、「ALLOCATE DESCRIPTOR」を参照してください。

     EXEC SQL
       FOR :batch ALLOCATE DESCRIPTOR GLOBAL :binddes WITH MAX 25
     END-EXEC.

関連項目

DESCRIBE DESCRIPTOR(実行可能埋込みSQL)

GET DESCRIPTOR(実行可能埋込みSQL)

SET DESCRIPTOR(実行可能埋込みSQL)

CALL(実行可能埋込みSQL)

用途

ストアド・プロシージャをコールします。

前提条件

アクティブなデータベース接続が存在している必要があります。

構文

CALL
call.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
schema プロシージャを格納するスキーマ。省略した場合、Oracle9iはプロシージャが固有のスキーマ内にあるとみなします。
pkg プロシージャが格納されているパッケージ。
st_proc コールするストアド・プロシージャ。
db_link : プロシージャが格納されているリモート・データベースへのデータベース・リンクの、完全または一部の名前。データベース・リンク参照の情報は、『Oracle Database SQL言語リファレンス』を参照してください。
expr プロシージャのパラメータ式のリスト。
ret_var : 関数からの戻り値を受け取るホスト変数。
ret_ind ret_var用の標識変数。

使用上の注意

この文の詳細は、「ストアドPL/SQLまたはJavaサブプログラムのコール」を参照してください。

ストアド・プロシージャの詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』(「外部ルーチン」の章)を参照してください。

 ...
     05  EMP-NAME      PIC X(10) VARYING.
     05  EMP-NUMBER    PIC S9(4) COMP VALUE ZERO.
     05  SALARY        PIC S9(5)V99 COMP-3 VALUE ZERO.
...
      05  D-EMP-NUMBER  PIC 9(4).
...
      ACCEPT D-EMP-NUMBER.
      EXEC SQL
        CALL mypkge.getsal(:EMP-NUMBER, :D-EMP-NUMBER, :EMP-NAME) INTO :SALARY
      END-EXEC.
...

関連項目

なし

CLOSE(実行可能埋込みSQL)

用途

カーソルのオープン時に取得したリソースを解放し、解析ロックを解除して、カーソルを使用禁止にします。

前提条件

カーソルまたはカーソル変数をオープンしている必要があります。またMODE=ANSIであることが必要です。

構文

CLOSE
close.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
cursor クローズするカーソル。
cursor_variable クローズするカーソル変数。

使用上の注意

クローズしたカーソルからは行をフェッチできません。カーソルを再オープンするには、そのカーソルがクローズされている必要はありません。HOLD_CURSORおよびRELEASE_CURSORのプリコンパイラ・オプションによって、CLOSE文の結果は異なります。これらのオプションの詳細は、第14章「プリコンパイラ・オプション」を参照してください。

この例では、CLOSE文の使用方法を示します。

     EXEC SQL CLOSE EMP-CUR END-EXEC.

関連項目

DECLARE CURSOR(埋込みSQLディレクティブ)

OPEN(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

COMMIT(実行可能埋込みSQL)

用途

データベースの変更内容をすべて確定し、オプションですべてのリソースを解放してデータベース・サーバーから切断し、カレント・トランザクションを終了します。

前提条件

カレント・トランザクションをコミットするために必要な権限はありません。

ユーザーがコミットしたインダウトの分散トランザクションを手動でコミットするには、FORCE TRANSACTIONのシステム権限が必要です。他のユーザーがコミットしたインダウトの分散トランザクションを手動でコミットするには、FORCE ANY TRANSACTIONのシステム権限が必要です。

構文

COMMIT
commit.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明


AT どのデータベースに対してCOMMIT文を発行するかを指定します。次のいずれかを使用してデータベースを指定します。
db_name すでにDECLARE DATABASE文で宣言されているデータベース識別子、またはCONNECT文で使用されているデータベース識別子。
host_variable この句を省略した場合、Oracle9iはデフォルトのデータベースに対してCOMMIT文を発行します。
WORK 標準SQLへの準拠のためにのみサポートされています。COMMIT文とCOMMIT WORK文は同等です。
COMMENT カレント・トランザクションに対応付けるコメントを指定します。'text'は、50文字以内の引用リテラルで、トランザクションがインダウトになると、Oracle9iではデータ・ディクショナリ・ビューDBA_2PC_PENDINGに、トランザクションIDとともに格納されます。
RELEASE リソースをすべて解放し、アプリケーションを Oracle9i Serverから切断します。
FORCE インダウトの分散トランザクションを手動でコミットできます。トランザクションは、ローカルまたはグローバル・トランザクションIDを格納する'text'によって識別されます。インダウトの分散トランザクションのIDを検索するには、データ・ディクショナリ・ビューDBA_2PC_PENDINGに問合せをします。また、オプションのintegerを使用してトランザクションにシステム変更番号(SCN)を明示的に割り当てることができます。integerを省略した場合、トランザクションはカレントSCNを使用してコミットされます。

使用上の注意

プログラムの最後のトランザクションは、COMMITコマンドまたはROLLBACK文およびRELEASEオプションを使用して、必ず明示的にコミットまたはロールバックしてください。プログラムが異常終了すると、Oracle9iは自動的に変更内容をロールバックします。

COMMIT文は、ホスト変数やプログラムの制御の流れには影響しません。この文の詳細は、「COMMIT文の使用」を参照してください。

この例では、埋込みSQL COMMIT文の使用方法を示します。

     EXEC SQL AT SALESDB COMMIT RELEASE END-EXEC.

関連項目

ROLLBACK(実行可能埋込みSQL)

SAVEPOINT(実行可能埋込みSQL)

CONNECT(実行可能埋込みSQL拡張機能)

用途

Oracle9iのデータベースにログインします。

前提条件

指定するデータベースに対してCREATE SESSIONのシステム権限が必要です。

構文

CONNECT
connect.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
user

password

ユーザー名およびパスワードを個別に指定します。
user_password 接続文字列username/password[@dbname]を含む1つのホスト変数。

Oracle9iで、使用しているオペレーティング・システムとの接続を検証するには、「/」をuser_password値として指定します。

AT 接続先のデータベースを指定します。次のいずれかを使用してデータベースを指定します。
db_name すでにDECLARE DATABASE文で宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。
USING デフォルト以外のデータベースへの接続に使用します。この句を省略した場合は、デフォルトのデータベースに接続します。
ALTER AUTHORIZATION パスワードを次の文字列に変更します。
new_password 新パスワードの文字列です。
IN SYSDBA MODE

IN SYSOPER MODE

SYSDBAまたはSYSOPERシステム権限で接続します。ALTER AUTHORIZATIONが使用されているとき、またはプリコンパイラ・オプションのAUTO_CONNECTがYESに設定されているときは、接続が許可されません。

使用上の注意

プログラムは複数の接続を持つことができますが、デフォルト・データベースには1度しか接続できません。この文の詳細は、「同時ログイン」を参照してください。

次の例では、CONNECTの使用方法を示します。

     EXEC SQL CONNECT :USERNAME
          IDENTIFIED BY :PASSWORD
     END-EXEC.

さらにこの文を使用して、useridの値をusernameの値にしたり、SCOTT/TIGERのようにpasswordを「/」で区切ったものを設定できます。

     EXEC SQL CONNECT :USERID END-EXEC.

関連項目

COMMIT(実行可能埋込みSQL)

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

ROLLBACK(実行可能埋込みSQL)

CONTEXT ALLOCATE(実行可能埋込みSQL拡張機能)

用途

EXEC SQL CONTEXT USE文で参照されているSQLLIBランタイム・コンテキストを初期化します。

前提条件

ランタイム・コンテキストは、SQL-CONTEXT型で宣言されている必要があります。

構文

CONTEXT ALLOCATE
conall.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
context メモリーが割り当てられるSQLLIBランタイム・コンテキスト。

使用上の注意

この文の詳細は、「ランタイム・コンテキストの埋込みSQL文およびディレクティブ」を参照してください。

この例では、Pro*COBOL埋込みSQLプログラムでCONTEXT ALLOCATE文を使用する方法を示します。

     EXEC SQL CONTEXT ALLOCATE :ctx1 END-EXEC.

関連項目

CONTEXT FREE(実行可能埋込みSQL拡張機能)

CONTEXT USE(Oracle埋込みSQLディレクティブ)

CONTEXT FREE(実行可能埋込みSQL拡張機能)

用途

ランタイム・コンテキストに関連付けられたすべてのメモリーを解放し、NULLポインタをホスト・プログラム変数に代入します。

前提条件

CONTEXT FREE文を使用してランタイム・コンテキストに割り当てられたメモリーを解放する前に、CONTEXT ALLOCATE文を使用して、指定されているランタイム・コンテキストにメモリーを割り当てる必要があります。

構文

CONTEXT FREE
confree.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
context メモリーの割当てを解除する、割当て済ランタイム・コンテキスト。

使用上の注意

この文の詳細は、「ランタイム・コンテキストの埋込みSQL文およびディレクティブ」を参照してください。

この例では、Pro*COBOL埋込みSQLプログラムでCONTEXT FREE文を使用する方法を示します。

     EXEC SQL CONTEXT FREE :ctx1 END-EXEC.

関連項目

CONTEXT ALLOCATE(実行可能埋込みSQL拡張機能)

CONTEXT USE(Oracle埋込みSQLディレクティブ)

CONTEXT USE(Oracle埋込みSQLディレクティブ)

用途

後続の実行SQL文の前提条件で指定されたSQLLIBランタイム・コンテキストを使用するように、プリコンパイラに指示します。

前提条件

CONTEXT USEディレクティブによって指定されたランタイム・コンテキストは、事前に宣言されている必要があります。

構文

CONTEXT USE
conuse.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
context 後続の実行SQL文によって使用される、割当て済ランタイム・コンテキストです。たとえば、使用するコンテキストをソース・コードに指定した後(複数のコンテキストを割り当てることができます)、Oracleサーバーに接続し、コンテキストのスコープ内でデータベースを操作できます。
DEFAULT グローバル・コンテキストが使用されることを示します。

使用上の注意

この文は、EXEC SQL INCLUDEあるいはEXEC ORACLE OPTIONなどのディレクティブに対して無効です。構文の動作は、EXEC SQL WHENEVERディレクティブと同様です。つまり、Cの標準スコープ・ルールに関係なく、指定されたソース・ファイル内でこの文とともに動作するすべての実行SQL文に対して有効です。

この文の詳細は、「ランタイム・コンテキストの埋込みSQL文およびディレクティブ」を参照してください。

この例では、Pro*COBOLプログラムでCONTEXT USEディレクティブを使用する方法を示します。

     EXEC SQL CONTEXT USE :ctx1 END-EXEC.

関連項目

CONTEXT ALLOCATE(実行可能埋込みSQL拡張機能)

CONTEXT FREE(実行可能埋込みSQL拡張機能)

DEALLOCATE DESCRIPTOR(埋込みSQL文)

用途

記述子領域の割当てを解除し、メモリーを解放するANSI動的SQL文です。

前提条件

DEALLOCATE DESCRIPTOR文で指定されている記述子は、ALLOCATE DESCRIPTOR文を使用して事前に割り当てる必要があります。

構文

DEALLOCATE DESCRIPTOR
dealdesc.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
GLOBAL | LOCAL LOCAL(デフォルト)はファイルのスコープです。GLOBALはアプリケーションのスコープです。
descriptor_name

'descriptor name'

割り当てられたANSI記述子名を格納するホスト変数。

割り当てられたANSI記述子の名前。


使用上の注意

DYNAMIC=ANSIプリコンパイラ・オプションを使用してください。

この文の詳細は、「DEALLOCATE DESCRIPTOR」を参照してください。

     EXEC SQL DEALLOCATE DESCRIPTOR GLOBAL 'SELDES'  END-EXEC.

関連項目

ALLOCATE DESCRIPTOR(実行可能埋込みSQL)

DESCRIBE DESCRIPTOR(実行可能埋込みSQL)

GET DESCRIPTOR(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

SET DESCRIPTOR(実行可能埋込みSQL)

DECLARE CURSOR(埋込みSQLディレクティブ)

用途

カーソルを宣言するためにカーソルに名前を付け、それをSQL文またはPL/SQLブロックに対応付けます。

前提条件

SQL文またはPL/SQLブロックの識別子を使用してカーソルを対応付けるには、DECLARE STATEMENT文を使用してこの識別子を事前に宣言する必要があります。

構文

DECLARE CURSOR
dclco.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT カーソルを宣言するデータベースを指定します。次のいずれかを使用してデータベースを指定します。
db_name DECLARE DATABASE文を使用してすでに宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。

この句を省略した場合、Oracle9iはデフォルトのデータベースに対してこのカーソルを宣言します。

cursor 宣言するカーソルの名前。
WITH HOLD カーソルは、COMMITまたはROLLBACKの実行後もオープンされたままです。UPDATEの場合は、カーソルを宣言しないでください。
SELECT文 カーソルに対応付けるSELECT文。直後の文にINTO句を含めないでください。
statement_name カーソルに対応付けるSQL文またはPL/SQLブロックを指定します。statement_nameまたはblock_nameは、DECLARE STATEMENT文を使用して事前に宣言する必要があります。

使用上の注意

カーソルは、他の埋込みSQL文で参照する前に、宣言する必要があります。カーソル宣言のスコープはプリコンパイル・ユニット内全体になるため、各カーソルの名前はスコープ内で一意であることが必要です。1つのプリコンパイル・ユニット内で同じ名前のカーソルを複数宣言することはできません。

カーソルは、UPDATE文またはDELETE文のWHERE句内でCURRENT OF構文を使用して参照できます。このとき、カーソルはOPEN文を使用してオープンされ、FETCH文を使用して行に位置付けられている必要があります。この文の詳細は、「DECLARE CURSOR文でのWITH HOLD句の使用」を参照してください。

この例では、DECLARE CURSOR文の使用方法を示します。

     EXEC SQL DECLARE EMPCURSOR CURSOR
         FOR SELECT ENAME, EMPNO, JOB, SAL
         FROM EMP
         WHERE DEPTNO = :DEPTNO
     END-EXEC.

関連項目

CLOSE(実行可能埋込みSQL)

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

DECLARE STATEMENT(埋込みSQLディレクティブ)

DELETE(実行可能埋込みSQL)

FETCH(実行可能埋込みSQL)

OPEN(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

SELECT(実行可能埋込みSQL)

UPDATE(実行可能埋込みSQL)

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

用途

後続の埋込みSQL文でアクセスされるデフォルト以外のデータベースの識別子を宣言します。

前提条件

デフォルト以外のデータベースのユーザー名にアクセスできる必要があります。

構文

DECLARE DATABASE
dcldbase.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
db_name デフォルト以外のデータベースに対して設定する識別子。

使用上の注意

デフォルト以外のデータベースに対してdb_nameを宣言するのは、他の埋込みSQL文がAT句を使用してそのデータベースを参照できるようにするためです。AT句を指定してCONNECT文を発行する前に、DECLARE DATABASE文を使用してデフォルト以外のデータベースに対してdb_nameを宣言する必要があります。

この文の詳細は、「ユーザー名/パスワードの使用方法」を参照してください。

この例では、DECLARE DATABASEディレクティブの使用方法を示します。

     EXEC SQL DECLARE ORACLE3 DATABASE END-EXEC.

関連項目

COMMIT(実行可能埋込みSQL)

CONNECT(実行可能埋込みSQL拡張機能)

DECLARE CURSOR(埋込みSQLディレクティブ)

DECLARE STATEMENT(埋込みSQLディレクティブ)

DELETE(実行可能埋込みSQL)

EXECUTE(実行可能埋込みSQL)

EXECUTE IMMEDIATE(実行可能埋込みSQL)

INSERT(実行可能埋込みSQL)

SELECT(実行可能埋込みSQL)

UPDATE(実行可能埋込みSQL)

DECLARE STATEMENT(埋込みSQLディレクティブ)

用途

SQL文またはPL/SQLブロックの識別子を宣言し、他の埋込みSQL文で使用できるようにします。

前提条件

なし

構文

DECLARE STATEMENT
dcl_stmt.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT SQL文またはPL/SQLブロックをどのデータベースに対して宣言するかを指定します。次のいずれかを使用してデータベースを指定します。
db_name DECLARE DATABASE文を使用してすでに宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。この句を省略した場合、Oracle Database 10gはデフォルトのデータベースに対してSQL文またはPL/SQLブロックを宣言します。
statement_name 文またはPL/SQLブロックに対して宣言されている識別子。

使用上の注意

DECLARE STATEMENT文を使用してSQL文またはPL/SQLブロックの識別子を宣言する必要があるのは、その識別子を参照するDECLARE CURSOR文の埋込みSQLプログラム内での位置が、文またはブロックを解析して識別子と対応付けるPREPARE文よりも物理的に(論理的ではなく)前になっているときのみです。

文の宣言のスコープは、カーソルの宣言と同様に、プリコンパイル・ユニット内全体です。この文の詳細は、「DECLARE」を参照してください。

例I

この例では、DECLARE STATEMENT文の使用方法を示します。

     EXEC SQL AT REMOTEDB
         DECLARE MYSTATEMENT STATEMENT
     END-EXEC.
     EXEC SQL PREPARE MYSTATEMENT FROM :MY-STRING
     END-EXEC.
     EXEC SQL EXECUTE MYSTATEMENT END-EXEC.

例II

この例では、DECLARE CURSOR文がPREPARE文の前にあるため、DECLARE STATEMENT文が必要です。

     EXEC SQL DECLARE MYSTATEMENT STATEMENT END-EXEC.
     ...
     EXEC SQL DECLARE EMPCURSOR CURSOR FOR MYSTATEMENT END-EXEC.
     ...
     EXEC SQL PREPARE MYSTATEMENT FROM :MY-STRING END-EXEC.
     ...

関連項目

CLOSE(実行可能埋込みSQL)

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

FETCH(実行可能埋込みSQL)

OPEN(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

DECLARE TABLE(Oracle埋込みSQLディレクティブ)

用途

オプションがSQLCHECK=SEMANTICS(または FULL)の場合に、プリコンパイラによって、各々の列のデータ型、デフォルト値および意味検査のためのNULLかNOT NULL指定など、表またはビューの構造を定義します。

前提条件

なし

構文

DECLARE TABLE
dcltab.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
table 宣言した表の名前。
column tableの列。
datatype columnのデータ型。Oracle9iデータ型の詳細は、「Oracle Database 10gのデータ型」を参照してください。
NOT NULL columnにはNULLを入れることができません。

使用上の注意

データ型の場合、長さ、精度および位取りに使用できるのは(式ではなく)整数のみです。この文の使用方法の詳細は、「SQLCHECK=SEMANTICSの指定」を参照してください。

次の文では、PARTNO、BINおよびQTYの列を含むPARTSという表を宣言しています。

     EXEC SQL DECLARE PARTS TABLE
         (PARTNO  NUMBER  NOT NULL,
          BIN     NUMBER,
          QTY     NUMBER)
     END-EXEC.

関連項目

なし

DELETE(実行可能埋込みSQL)

用途

表またはビューの実表から行を削除します。

前提条件

表から行を削除するには、表がユーザーのスキーマ内にあるか、表に対してDELETEの権限を持っている必要があります。

ビューの実表から行を削除するには、ビューが属するスキーマの所有者が、実表に対してDELETEの権限を持っている必要があります。また、ビューがユーザー所有のスキーマ以外のスキーマにある場合は、ビューに対するDELETEの権限を付与されている必要があります。

DELETE ANY TABLEシステム権限を持っていれば、すべての表またはビューの実表から行を削除できます。

構文

DELETE
delete.gifの説明

DML RETURNING句の構文を示します。

RETURNING句


キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT どのデータベースに対してDELETE文を発行するかを指定します。次のいずれかを使用してデータベースを指定します。
db_name すでにDECLARE DATABASE文で宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。この句を省略した場合、DELETE文はデフォルトのデータベースに対して発行されます。
host_integer

integer

WHERE句に配列ホスト変数が含まれる場合に、文を実行する回数を制限します。この句を省略した場合、Oracle9iは最小の配列の各コンポーネントにつき1回ずつ文を実行します。
schema 表またはビューを含むスキーマ。schemaを省略した場合、Oracle9iは表またはビューがユーザーのスキーマ内にあるとみなします。
table view 行を削除する表の名前。viewを指定すると、Oracle9iはビューの実表から行を削除します。
dblink 表またはビューがあるリモート・データベースへのデータベース・リンクの完全または部分的な名前。データベース・リンク参照方法の詳細は、『Oracle Database SQL言語リファレンス』の第2章を参照してください。Oracle9iを分散オプションで使用している場合のみ、リモートの表またはビューから行を削除できます。

dblinkを省略した場合、Oracle9iは表またはビューがローカル・データベースにあるとみなします。

part_name 表内のパーティションの名前。
alias 表に割り当てられている別名。別名は一般に、DELETE文で相関問合せのために使用します。
WHERE 削除する行を指定します。

condition

CURRENT OF

この句を完全に省略した場合、Oracle9iは表またはビューからすべての行を削除します。
DML RETURNING句 詳細は、「DML RETURNING句」を参照してください。

使用上の注意

WHERE句のホスト変数は、すべてスカラーか、すべて配列であることが必要です。変数がスカラーの場合、Oracle9iはDELETE文を1回のみ実行します。変数が配列の場合、Oracle9iは配列のコンポーネント・セットごとに1回ずつこの文を実行します。1回の実行で0行、1行または複数行を削除できます。

WHERE句の配列ホスト変数は、サイズが異なっていてもかまいません。この場合、Oracle9iが文を実行する回数は、次のうちの小さい方の値によって決定します。

この条件を満たす行が存在しない場合、行は削除されず、SQLCODEはNOT_FOUND条件を戻します。

削除された行の累積数はSQLCAを介して戻されます。WHERE句に配列ホスト変数が指定されていると、DELETE文によって処理された配列のすべてのコンポーネントにおよぶ削除行数の合計がこの値に設定されます。

条件を満たす行がない場合、Oracle9iはSQLCAのSQLCODEを介してエラーを戻します。WHERE句を省略した場合、Oracle9iはSQLCAのSQLWARNの第5コンポーネントに警告フラグを設定します。この文およびSQLCAの詳細は、「SQLコミュニケーション領域の使用」を参照してください。

DELETE文ではコメントを使用して、指示またはヒントをOracle9iのオプティマイザに渡すことができます。オプティマイザはヒントを使用して文の実行計画を選択します。ヒントの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

この例では、DELETE文の使用方法を示します。

     EXEC SQL DELETE FROM EMP
        WHERE DEPTNO = :DEPTNO
        AND JOB = :JOB
    END-EXEC.
    EXEC SQL DECLARE EMPCURSOR CURSOR
        FOR SELECT EMPNO, COMM
        FROM EMP
    END-EXEC.
    EXEC SQL OPEN EMPCURSOR END-EXEC.
    EXEC SQL FETCH EMPCURSOR
        INTO :EMP-NUMBER, :COMMISSION
    END-EXEC.
    EXEC SQL DELETE FROM EMP
        WHERE CURRENT OF EMPCURSOR
    END-EXEC.

関連項目

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

DECLARE STATEMENT(埋込みSQLディレクティブ)

DESCRIBE(実行可能埋込みSQL)

用途

Oracle動的SQL文またはPL/SQLブロックのホスト変数の記述を保持する記述子を初期化します。

前提条件

埋込みSQLのPREPARE文を使用して、SQL文またはPL/SQLブロックを事前に準備しておく必要があります。

構文

DESCRIBE
describe.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
BIND VARIABLES FOR SQL文またはPL/SQLブロックの入力変数に関する情報を保持する記述子を初期化します。
SELECT LIST FOR SELECT文の選択リストに関する情報を保持する記述子を初期化します。
- デフォルトはSELECT LIST FORです。
statement_name PREPARE文を使用して事前に準備したSQL文またはPL/SQLブロックを指定します。
descriptor 初期化する記述子の名前です。

使用上の注意

埋込みSQLプログラム内のバインド記述子または選択記述子を操作するには、その前にDESCRIBE文を発行する必要があります。

入力変数と出力変数の両方を同じ記述子に記述することはできません。

DESCRIBE文が検出する変数の数は、準備するSQL文またはPL/SQLブロックのプレースホルダの合計数です。一意に名前が付けられたプレースホルダの合計数ではありません。この文の詳細は、「DESCRIBE文」を参照してください。

この例では、Pro*COBOL埋込みSQLプログラムでDESCRIBE文を使用する方法を示します。

     EXEC SQL PREPARE MYSTATEMENT FROM :MY-STRING END-EXEC.
     EXEC SQL DECLARE EMPCURSOR
         FOR SELECT EMPNO, ENAME, SAL, COMM
         FROM EMP
         WHERE DEPTNO = :DEPT-NUMBER
     END-EXEC.
     EXEC SQL DESCRIBE BIND VARIABLES FOR MYSTATEMENT
         INTO BINDDESCRIPTOR
     END-EXEC.
     EXEC SQL OPEN EMPCURSOR
         USING BINDDESCRIPTOR
     END-EXEC.
     EXEC SQL DESCRIBE SELECT LIST FOR MY-STATEMENT
         INTO SELECTDESCRIPTOR
     END-EXEC.
     EXEC SQL FETCH EMPCURSOR
         INTO SELECTDESCRIPTOR
     END-EXEC.

関連項目

PREPARE(実行可能埋込みSQL)

DESCRIBE DESCRIPTOR(実行可能埋込みSQL)

用途

ANSI SQL文の情報を取得し、記述子に格納します。

前提条件

埋込みSQLのPREPARE文を使用して、SQL文を事前に準備しておく必要があります。

構文

DESCRIBE DESCRIPTOR
descans.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
statement_id 事前に準備されているSQL文またはPL/SQLブロックの名前。OUTPUTはデフォルトです。
descriptor_name SQL文の情報を保持する記述子名を格納するホスト変数。
'descriptor name' 記述子の名前。
GLOBAL | LOCAL LOCALがデフォルトです。ファイルのスコープです。GLOBALはアプリケーションのスコープです。

使用上の注意

DYNAMIC=ANSIプリコンパイラ・オプションを使用してください。INPUT記述子では、COUNTおよびNAMEのみインプリメントされます。

DESCRIBE文が検出する変数の数は、準備するSQL文またはPL/SQLブロックのプレースホルダの合計数です。一意に名前が付けられたプレースホルダの合計数ではありません。この文の詳細は、第10章「ANSI動的SQL」を参照してください。

     EXEC SQL PREPARE s FROM :my_stament END-EXEC.
     EXEC SQL DESCRIBE INPUT s USING DESCRIPTOR 'in' END-EXEC.

関連項目

ALLOCATE DESCRIPTOR(実行可能埋込みSQL)

DEALLOCATE DESCRIPTOR(埋込みSQL文)

GET DESCRIPTOR(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

SET DESCRIPTOR(実行可能埋込みSQL)

ENABLE THREADS(実行可能埋込みSQL拡張機能)

用途

複数のスレッドをサポートするプロセスを初期化します。

前提条件

マルチスレッド・アプリケーションをサポートするプラットフォーム用にプリコンパイラ・アプリケーションを開発し、このプラットフォームでコンパイルを実行して、コマンドラインにTHREADS=YESを指定する必要があります。

構文

ENABLE THREADS
enable_t.gifの説明

キーワードおよびパラメータ

なし

使用上の注意

ENABLE THREADS文を実行するのは一度、それも他の実行SQL文の前やスレッドの起動前にしてください。この文にはホスト変数を指定する必要はありません。

この例では、Pro*COBOLプログラムでENABLE THREADS文を使用する方法を示します。

EXEC SQL ENABLE THREADS END-EXEC.

関連項目

CONTEXT ALLOCATE(実行可能埋込みSQL拡張機能)

CONTEXT FREE(実行可能埋込みSQL拡張機能)

CONTEXT USE(Oracle埋込みSQLディレクティブ)

EXECUTE ...END-EXEC(実行可能埋込みSQL拡張機能)

用途

Oracle Pro*COBOLプログラムに無名PL/SQLブロックを埋め込みます。

前提条件

なし

構文

EXECUTE ... END-EXEC
execeex.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT PL/SQLブロックをどのデータベースに対して実行するかを指定します。次のいずれかを使用してデータベースを指定します。
db_name すでにDECLARE DATABASE文で宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。

この句を省略した場合、PL/SQLブロックはデフォルトのデータベースに対して実行されます。
pl/sql_block PL/SQLブロックの作成方法など、PL/SQLの詳細は『Oracle Database PL/SQL言語リファレンス』を参照してください。
END-EXEC 埋込みPL/SQLブロックの後に配置する必要があります。

使用上の注意

Oracleプリコンパイラは埋込みPL/SQLブロックを1つの埋込みSQL文のように扱うため、PL/SQLブロックは Oracleプリコンパイラ・プログラムでSQL文を埋め込める場所であればどこにでも埋め込めます。Oracleプリコンパイラ・プログラムへのPL/SQLブロックの埋込みに関する詳細は、第6章「埋込みPL/SQL」を参照してください。

Oracleプリコンパイラ・プログラムにこのEXECUTE文を挿入すると、プログラムにPL/SQLブロックが埋め込まれます。

     EXEC SQL EXECUTE
     BEGIN
        SELECT ENAME, JOB, SAL
            INTO :EMP-NAME:IND-NAME, :JOB-TITLE, :SALARY
            FROM EMP
            WHERE EMPNO = :EMP-NUMBER;
        IF :EMP-NAME:IND-NAME IS NULL
            THEN RAISE NAME-MISSING;
        END IF;
     END;
     END-EXEC.

関連項目

EXECUTE IMMEDIATE(実行可能埋込みSQL)

EXECUTE(実行可能埋込みSQL)

用途

Oracle動的SQLでは、埋込みSQLのPREPARE文によって準備済のDELETE文、INSERT文またはUPDATE文、あるいはPL/SQLブロックを実行します。

前提条件

埋込みSQLのPREPARE文を使用して、SQL文またはPL/SQLブロックを先に準備しておく必要があります。

構文

EXECUTE
execo.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
FOR :array_size

FOR integer

処理される行の数を格納するホスト変数。

処理される行数。

USING句が配列ホスト変数を含む場合に、文の実行回数を制限します。この句を省略した場合、Oracle9iは最小の配列の各コンポーネントに対してこの文を1回ずつ実行します。

statement_id 実行するSQL文またはPL/SQLブロックに対応付けられているプリコンパイラ識別子。プリコンパイラ識別子を文またはPL/SQLブロックに対応付けるには、埋込みSQLのPREPARE文を使用します。
USING DESCRIPTOR SQLDA_descriptor Oracle記述子を使用します。

ANSI記述子(INTO句)と一緒には使用できません。

USING オプションの標識変数を使用してホスト変数のリストを指定します。Oracle9iは実行する文にこれらの変数を入力変数として代入します。ホスト変数および標識変数は、すべてスカラーか、すべて配列であることが必要です。
host_variable ホスト変数。
indicator_variable 標識変数。

使用方法

この文の詳細は、第9章「Oracle動的SQL」を参照してください。

この例では、Pro*COBOL埋込みSQLプログラムでEXECUTE文を使用する方法を示します。

     EXEC SQL PREPARE MY-STATEMENT FROM MY-STRING END-EXEC.
     EXEC SQL EXECUTE MY-STATEMENT USING :MY-VAR END-EXEC.

関連項目

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

PREPARE(実行可能埋込みSQL)

EXECUTE DESCRIPTOR(実行可能埋込みSQL)

用途

ANSI SQL方法4では、埋込みSQLのPREPARE文によって準備済のDELETE文、INSERT文またはUPDATE文、あるいはPL/SQLブロックを実行します。

前提条件

埋込みSQLのPREPARE文を使用して、SQL文またはPL/SQLブロックを先に準備しておく必要があります。

構文

EXECUTE DESCRIPTOR
execa.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
FOR :array_size

FOR integer

処理される行の数を格納するホスト変数。

処理される行数。

文の実行回数を制限します。Oracle9iは最小の配列の各コンポーネントに対してこの文を1回ずつ実行します。

statement_id 実行するSQL文またはPL/SQLブロックに対応付けられているプリコンパイラ識別子。プリコンパイラ識別子を文またはPL/SQLブロックに対応付けるには、埋込みSQLのPREPARE文を使用します。
USING

descriptor_name

descriptor name

ANSI入力記述子。

入力記述子名を格納するホスト変数。

入力記述子の名前。

INTO

descriptor_name

descriptor name

ANSI出力記述子。

出力記述子名を格納するホスト変数。

出力記述子の名前。

GLOBAL | LOCAL LOCAL(デフォルト)はファイルのスコープです。GLOBALはアプリケーションのスコープです。

使用上の注意

この文の詳細は、「EXECUTE」を参照してください。

ANSI動的SQL方法4では、EXECUTEのINTO句によりSELECTのDML RETURNINGを使用することができます。

EXEC SQL EXECUTE S2 USING DESCRIPTOR :bv1 INTO DESCRIPTOR 'SELDES' END-EXEC.

関連項目

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

PREPARE(実行可能埋込みSQL)

EXECUTE IMMEDIATE(実行可能埋込みSQL)

用途

ホスト変数を含まないDELETE文、INSERT文またはUPDATE文、あるいはPL/SQLブロックを準備し、実行します。

前提条件

なし

構文

EXECUTE IMMEDIATE
execi.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT SQL文またはPL/SQLブロックをどのデータベースに対して宣言するかを指定します。次のいずれかを使用してデータベースを指定します。
db_name すでにDECLARE DATABASE文で宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。

この句を省略した場合、文またはブロックはデフォルトのデータベースに対して実行されます。
host_string 実行するSQL文またはPL/SQLブロックを値とするホスト変数。
text 実行するSQL文またはPL/SQLブロックを含むテキスト・リテラル。引用符は省略できます。

SQL文は、DELETE文、INSERT文またはUPDATE文のいずれかであることが必要です。

使用上の注意

EXECUTE IMMEDIATE文を発行すると、Oracle9iは指定したSQL文またはPL/SQLブロックを解析してエラーをチェックし、実行します。見つかったエラーは、SQLCAのSQLCODEコンポーネントに戻されます。

この文の詳細は、「EXECUTE IMMEDIATE文」を参照してください。

この例では、EXECUTE IMMEDIATE文の使用方法を示します。

     EXEC SQL
         EXECUTE IMMEDIATE 'DELETE FROM EMP WHERE EMPNO = 9460'
     END-EXEC.

関連項目

PREPARE(実行可能埋込みSQL)

EXECUTE(実行可能埋込みSQL)

FETCH(実行可能埋込みSQL)

用途

選択リストの値をホスト変数に割り当てて、問合せが戻した1つまたは複数の行を取り出します。ANSI動的SQL方法4の詳細は、「FETCH DESCRIPTOR(実行可能埋込みSQL)」を参照してください。

前提条件

OPEN文を使用してカーソルを先にオープンしておく必要があります。

構文

FETCH
fetcho.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
FOR :array_size

FOR integer

処理される行の数を格納するホスト変数。

処理される行数。

配列ホスト変数を使用する場合にフェッチする行数を制限します。この句を省略した場合、Oracle9iは最小の配列を満たすのに十分な数の行をフェッチします。

cursor DECLARE CURSOR文を使用して宣言したカーソル。FETCH文は、カーソルに対応付けられた問合せが選択した行のうちの1行を戻します。
cursor_variable ALLOCATE文を使用して割り当てたカーソル変数。FETCH文は、カーソル変数に対応付けられた問合せが選択した行のうちの1行を戻します。
INTO データをフェッチするホスト変数およびオプションの標識変数のリストを指定します。これらのホスト変数および標識変数は、プログラム内で宣言されている必要があります。
USING SQLDA_descriptor DESCRIBE文を使用して事前に参照しているOracle記述子を指定します。この句は、動的埋込みSQL方法4以外では使用しないでください。カーソル変数を使用している場合は、USING句は適用されません。
host_variable データが戻されるホスト変数。
indicator_variable ホスト標識変数。

使用上の注意

FETCH文はアクティブ・セットの行を読み込み、結果が含まれる出力変数の名前を示します。対応付けられたホスト変数がNULLの場合、標識変数の値は-1に設定されます。

出力ホスト変数のサイズは取り出された行数を示し、FOR句は値を示します。データを受け取るホスト変数は、すべてスカラーか、すべて配列であることが必要です。スカラーの場合、Oracle9iは1行のみフェッチします。配列の場合、Oracle9iは配列を満たすのに十分な数の行をフェッチします。

配列ホスト変数は、サイズが異なってもかまいません。この場合、Oracle9iがフェッチする行数は、次の値のうち小さい方です。

フェッチする行数は、実際に問合せを満たす行数によってさらに限定できます。

FETCH文が、問合せで戻された行をすべて取り出さなかった場合、カーソルは戻された次の行に配置されます。問合せで戻された最後の行を取り出すと、その次のFETCHでは警告コードが発生します。この警告コードはSQLCAのSQLCODE要素に戻されます。

配列が完全に満たされない場合には警告が発行されます。その場合は、実際にフェッチされた行数をSQLERRD(3)で確認してください。

FETCH文にはAT句がないので注意してください。カーソルによってアクセスされるデータベースは、DECLARE CURSOR文で指定する必要があります。

FETCH文では、アクティブ・セット内を前方向にのみ進めます。すでにフェッチした行に戻る場合は、カーソルを再オープンして各行を順番に取り出す必要があります。アクティブ・セットを変更するには、新しい値をカーソルの問合せの入力ホスト変数に割り当て、カーソルを再オープンします。

この例では、Pro*COBOL埋込みSQLプログラム内のFETCH文を示します。

     EXEC SQL DECLARE EMPCURSOR CURSOR FOR
         SELECT JOB, SAL FROM EMP WHERE DEPTNO = 30
     END-EXEC.
     ...
     EXEC SQL WHENEVER NOT FOUND GOTO ...
 LOOP.
     EXEC SQL FETCH EMPCURSOR INTO :JOB-TITLE1, :SALARY1 END-EXEC.
     EXEC SQL FETCH EMPCURSOR INTO :JOB-TITLE2, :SALARY2 END-EXEC.
     ...
     GO TO LOOP.
     ...

関連項目

CLOSE(実行可能埋込みSQL)

DECLARE CURSOR(埋込みSQLディレクティブ)

OPEN(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

FETCH DESCRIPTOR(実行可能埋込みSQL)

用途

選択リストの値をホスト変数に割り当てて、問合せが戻した1つまたは複数の行を取り出します。ANSI動的SQL方法4で使用します。

前提条件

OPEN文を使用してカーソルを先にオープンしておく必要があります。

構文

FETCH DESCRIPTOR
fetcha.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
FOR :array_size

FOR integer

処理される行の数を格納するホスト変数。

処理される行数。

配列ホスト変数を使用する場合にフェッチする行数を制限します。 この句を省略した場合、Oracle9iは最小の配列を満たすのに十分な数の行をフェッチします。

cursor DECLARE CURSOR文を使用して宣言したカーソル。FETCH文は、カーソルに対応付けられた問合せが選択した行のうちの1行を戻します。
cursor_variable ALLOCATE文を使用して割り当てたカーソル変数。FETCH文は、カーソル変数に対応付けられた問合せが選択した行のうちの1行を戻します。
INTO データをフェッチするホスト変数およびオプションの標識変数のリストを指定します。これらのホスト変数および標識変数は、プログラム内で宣言されている必要があります。
INTO 'descriptor name'

INTO :descriptor_name

ANSI記述子の名前。

出力記述子名を格納するホスト変数。

GLOBAL | LOCAL LOCAL(デフォルト)はファイルのスコープです。GLOBALはアプリケーションのスコープです。

使用上の注意

出力ホスト変数のサイズは取り出された行数を示し、FOR句は値を示します。データを受け取るホスト変数は、すべてスカラーか、すべて配列であることが必要です。スカラーの場合、Oracle9iは1行のみフェッチします。配列の場合、Oracle9iは配列を満たすのに十分な数の行をフェッチします。

配列ホスト変数は、サイズが異なってもかまいません。この場合、Oracle9iがフェッチする行数は、次の値のうち小さい方です。

FETCH文が、問合せで戻された行をすべて取り出さなかった場合、カーソルは戻された次の行に配置されます。問合せで戻された最後の行を取り出すと、その次のFETCHでは警告コードが発生します。この警告コードはSQLCAのSQLCODE要素に戻されます。

配列が完全に満たされない場合には警告が発行されます。その場合は、実際にフェッチされた行数をSQLERRD(3)で確認してください。

FETCH文にはAT句がないので注意してください。カーソルによってアクセスされるデータベースは、DECLARE CURSOR文で指定する必要があります。

FETCH文では、アクティブ・セット内を前方向にのみ進めます。すでにフェッチした行に戻る場合は、カーソルを再オープンして各行を順番に取り出す必要があります。アクティブ・セットを変更するには、新しい値をカーソルの問合せの入力ホスト変数に割り当て、カーソルを再オープンします。

ANSI SQL方法4アプリケーション用にDYNAMIC=ANSIプリコンパイラ・オプションを使用してください。ANSI SQL方法4アプリケーションの詳細は、「FETCH」を参照してください。

...
EXEC SQL ALLOCATE DESCRIPTOR 'output_descriptor' END-EXEC.
...
EXEC SQL PREPARE S FROM :dyn_statement END-EXEC.
EXEC SQL DECLARE mycursor CURSOR FOR S END-EXEC.
...
EXEC SQL FETCH mycursor INTO DESCRIPTOR 'output_descriptor' END-EXEC.
...

関連項目

PREPARE文

FREE(実行可能埋込みSQL拡張機能)

用途

カーソル変数、LOBロケータまたはROWIDが使用するメモリーを解放します。

前提条件

メモリーがすでに割り当てられている必要があります。

構文

FREE
freecob.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
cursor_variable ALLOCATE文に割当て済のカーソル変数。SQL-CURSOR型です。

FETCH文は、カーソル変数に対応付けられた問合せが選択した行のうちの1行を戻します。

host_ptr LOB用のROWID、SQL-BLOB、SQL-CLOBまたはSQL-NCLOBのSQL_ROWID型の変数。

使用上の注意

「カーソル」および「カーソル変数」を参照してください。

* CURSOR VARIABLE EXAMPLE
...
 01  CUR      SQL-CURSOR.
...
     EXEC SQL ALLOCATE :CUR END-EXEC.
...
     EXEC SQL CLOSE :CUR END-EXEC.
     EXEC SQL FREE  :CUR END-EXEC.
...

関連項目

ALLOCATE(実行可能埋込みSQL拡張機能)

CLOSE(実行可能埋込みSQL)

DECLARE CURSOR(埋込みSQLディレクティブ)

GET DESCRIPTOR(実行可能埋込みSQL)

用途

SQL記述子領域のホスト変数の情報を取得します。

前提条件

値構文およびANSI動的SQL方法4以外では使用しないでください。

構文

GET DESCRIPTOR
getdesc.gifの説明

item_nameのみ次の中から選択できます。

例
getdncob.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
array_size

integer

処理される行の数を格納するホスト変数。

処理される行数。

descriptor_name 割り当てられたANSI記述子名を格納するホスト変数。
'descriptor name' 割り当てられたANSI記述子の名前。
GLOBAL | LOCAL LOCAL(デフォルト)はファイルのスコープです。GLOBALはアプリケーションのスコープです。
host_var=COUNT 入力および出力変数の合計数を格納するホスト変数。
integer 入力および出力変数の合計数。
VALUE :host_integer 参照される入力または出力変数の位置を格納するホスト変数。
VALUE integer 参照される入力または出力変数の位置。
host_var 項目の値を受け取るホスト変数。
item_name item_nameに関しては、表10-4および表10-5の「記述子項目名」を参照してください。

使用上の注意

DYNAMIC=ANSIプリコンパイラ・オプションを使用してください。配列サイズ句は、DATA、RETURNED_LENGTHおよびINDICATORの項目名で使用できます。「GET DESCRIPTOR」を参照してください。

     EXEC SQL GET DESCRIPTOR GLOBAL 'mydesc' :mydesc_num_vars = COUNT END-EXEC.

関連項目

ALLOCATE DESCRIPTOR(実行可能埋込みSQL)

DESCRIBE DESCRIPTOR(実行可能埋込みSQL)

SET DESCRIPTOR(実行可能埋込みSQL)

INSERT(実行可能埋込みSQL)

用途

表またはビューの実表に行を追加します。

前提条件

表に行を挿入するには、その表が自分のスキーマ内にあるか、またはその表に対してINSERTの権限を持っている必要があります。

ビューの実表に行を挿入するには、ビューが属するスキーマの所有者が、その実表に対してINSERTの権限を持っている必要があります。また、ビューがユーザーのスキーマ以外のスキーマ内にある場合は、ビューに対してINSERTの権限を持っている必要があります。

INSERT ANY TABLEシステム権限を使用すると、表またはビューの実表ならどれにでも行を入力できます。

構文

INSERT
insert.gifの説明

DML RETURNING句の構文を示します。

RETURNING句


キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT INSERT文をどのデータベースについて実行するかを指定します。次のいずれかを使用してデータベースを指定します。
db_name すでにDECLARE DATABASE文で宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。この句を省略した場合、INSERT文はデフォルトのデータベースに対して実行されます。
FOR: host_integer VALUES句に配列ホスト変数が含まれる場合に、文を実行する回数を制限します。この句を省略した場合、Oracle9iは最小の配列の各コンポーネントについて1回ずつ文を実行します。
schema 表またはビューを含むスキーマ。schemaを省略した場合、Oracle9iは表またはビューがユーザーのスキーマ内にあるとみなします。
table

view

行を挿入する表の名前。viewを指定する場合、Oracle9iはビューの実表に行を挿入します。
db_link : 表またはビューがあるリモート・データベースへのデータベース・リンクの完全または部分的な名前。データベース・リンク参照の情報は、『Oracle Database SQL言語リファレンス』を参照してください。分散オプションでOracle9iを使用している場合のみ、リモートの表またはビューに行を挿入できます。

db_linkを省略した場合、Oracle9iは表またはビューがローカル・データベース内にあるとみなします。

part_name 表内のパーティションの名前。
column 表またはビューの列。挿入した行では、このリストの各列にVALUES句または問合せから値が割り当てられます。

このリストから表の列を削除する場合、挿入された行の列値は、表の作成時に指定した列のデフォルト値となります。列のリストを完全に省略した場合は、VALUES句または問合せによって、表のすべての列の値を指定する必要があります。

VALUES 表またはビューに挿入する値の行を指定します。『Oracle Database SQL言語リファレンス』のexprの構文説明を参照してください。ホスト変数にオプションの標識変数を合せた式も使用できます。VALUES句では、列のリストの各列に式を指定する必要があります。
subquery 表に挿入される行を戻す副問合せ。この副問合せの選択リストの列数は、INSERT文の列のリストの列数と同じであることが必要です。副問合せの構文説明は、『Oracle Database SQL言語リファレンス』のSELECTに関する項を参照してください。
DML RETURNING句 詳細は、「DML RETURNING句」を参照してください。

使用上の注意

WHERE句内のホスト変数は、すべてスカラーか、すべて配列であることが必要です。変数がスカラーの場合、Oracle9iはINSERT文を1回実行します。変数が配列の場合、Oracle9iはINSERT文を各配列コンポーネント・セットについて1回ずつ実行して、1行ずつ挿入します。

WHERE句の配列ホスト変数は、サイズが異なっていてもかまいません。この場合、Oracle9iが文を実行する回数は、次のうちの小さい方の値によって決定します。

この文の詳細は、「基本的なSQL文」を参照してください。

例I

この例では、埋込みSQL INSERT文の使用方法を示します。

     EXEC SQL
         INSERT INTO EMP (ENAME, EMPNO, SAL)
         VALUES (:ENAME, :EMPNO, :SAL)
     END-EXEC.

例II

この例では、副問合せを使用した埋込みSQLのINSERT文を示します。

     EXEC SQL
         INSERT INTO NEWEMP (ENAME, EMPNO, SAL)
         SELECT ENAME, EMPNO, SAL FROM EMP
         WHERE DEPTNO = :DEPTNO
     END-EXEC.

関連項目

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

LOB APPEND(実行可能埋込みSQL拡張機能)

用途

LOBを別のLOBの最後に追加します。

前提条件

LOBバッファリングは使用可能にしないでください。宛先LOBが初期化されている必要があります。

構文

LOB APPEND
lobapp.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「APPEND」を参照してください。

関連項目

他のLOB文を参照してください。

LOB ASSIGN(実行可能埋込みSQL拡張機能)

用途

LOBまたはBFILEロケータを別のロケータに割り当てます。

構文

LOB ASSIGN
lobass.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「ASSIGN」を参照してください。

関連項目

他のLOB文を参照してください。

LOB CLOSE(実行可能埋込みSQL拡張機能)

用途

オープンされているLOBまたはBFILEをクローズします。

構文

LOB CLOSE
lobclose.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「CLOSE」を参照してください。

関連項目

他のLOB文を参照してください。

LOB COPY(実行可能埋込みSQL拡張機能)

用途

LOB値の全部または一部を別のLOBにコピーします。

構文

LOB COPY
lobcop.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「COPY」を参照してください。

関連項目

他のLOB文を参照してください。

LOB CREATE TEMPORARY(実行可能埋込みSQL拡張機能)

用途

一時LOBを作成します。

構文

LOB CREATE TEMPORARY
lobcreat.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「CREATE TEMPORARY」を参照してください。

関連項目

他のLOB文を参照してください。

LOB DESCRIBE(実行可能埋込みSQL拡張機能)

用途

LOBから属性を取り出します。

構文

LOB DESCRIBE
lobdesc.gifの説明

attribは次のとおりです。

例
lobatt.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「DESCRIBE」を参照してください。

関連項目

他のLOB文を参照してください。

LOB DISABLE BUFFERING(実行可能埋込みSQL拡張機能)

用途

LOBバッファリングを使用禁止にします。

構文

LOB DISABLE BUFFERING


使用上の注意

使用方法、キーワード、パラメータおよび例は、「DISABLE BUFFERING」を参照してください。

関連項目

他のLOB文を参照してください。

LOB ENABLE BUFFERING(実行可能埋込みSQL拡張機能)

用途

LOBバッファリングを有効にします。

構文

LOB ENABLE BUFFERING
lobenab.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「ENABLE BUFFERING」を参照してください。

関連項目

他のLOB文を参照してください。

LOB ERASE(実行可能埋込みSQL拡張機能)

用途

指定されたオフセットから始まる指定された量のLOBデータを消去します。

構文

LOB ERASE
loberas.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「ERASE」を参照してください。

関連項目

他のLOB文を参照してください。

LOB FILE CLOSE ALL(実行可能埋込みSQL拡張機能)

用途

カレント・セッションでオープンしているすべてのBFILEをクローズします。

構文

LOB FILE CLOSE ALL
lobficl.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「FILE CLOSE ALL」を参照してください。

関連項目

他のLOB文を参照してください。

LOB FILE SET(実行可能埋込みSQL拡張機能)

用途

BFILEロケータのDIRECTORYおよびFILENAMEを設定します。

構文

LOB FILE SET
lobfise.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「FILE SET」を参照してください。

関連項目

他のLOB文を参照してください。

LOB FLUSH BUFFER(実行可能埋込みSQL拡張機能)

用途

LOBのバッファをデータベース・サーバーに書き込みます。

構文

LOB FLUSH BUFFER
lobflbuf.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「FLUSH BUFFER」を参照してください。

関連項目

他のLOB文を参照してください。

LOB FREE TEMPORARY(実行可能埋込みSQL拡張機能)

用途

LOBロケータ用に一時領域を解放します。

構文

LOB FREE TEMPORARY
lobfrtem.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「FREE TEMPORARY」を参照してください。

関連項目

他のLOB文を参照してください。

LOB LOAD(実行可能埋込みSQL拡張機能)

用途

BFILEの全部または一部を、内部LOBにコピーします。

構文

LOB LOAD
loblofr.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「LOAD FROM FILE」を参照してください。

関連項目

他のLOB文を参照してください。

LOB OPEN(実行可能埋込みSQL拡張機能)

用途

読込みまたは読取り/書込みを行うLOBまたはBFILEをオープンします。

構文

LOB OPEN
lobopen.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「OPEN」を参照してください。

関連項目

他のLOB文を参照してください。

LOB READ(実行可能埋込みSQL拡張機能)

用途

LOBまたはBFILEの一部をバッファに読み込みます。

構文

LOB READ
lobread.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「READ」を参照してください。

関連項目

他のLOB文を参照してください。

LOB TRIM(実行可能埋込みSQL拡張機能)

用途

LOB値を切り捨てます。

構文

LOB TRIM
lobtrim.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「TRIM」を参照してください。

関連項目

他のLOB文を参照してください。

LOB WRITE(実行可能埋込みSQL拡張機能)

用途

バッファの内容をLOBに書き込みます。

構文

LOB WRITE
lobwri.gifの説明

使用上の注意

使用方法、キーワード、パラメータおよび例は、「WRITE」を参照してください。

関連項目

他のLOB文を参照してください。

OPEN(実行可能埋込みSQL)

用途

対応付けられた問合せを評価し、USING句が示すホスト変数名を問合せのWHERE句に代入して、カーソルをオープンします。動的SQL文でEXECUTEのかわりに使用できます。ANSI動的SQL構文は、「OPEN DESCRIPTOR(実行可能埋込みSQL)」を参照してください。

前提条件

カーソルは、オープンする前に埋込みSQLのDECLARE CURSOR文を使用して宣言しておく必要があります。

構文

OPEN
openo.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
array_size

integer

処理される行の数を格納するホスト変数。

処理される行数。

OPENがEXECUTEと同等の場合にのみ使用できます。

cursor オープンする(すでに宣言されている)カーソル。
host_variable カーソルに対応付けられた文に代入するホスト変数を指定します。

ANSI記述子(INTO句)と一緒には使用できません。

DESCRIPTOR SQLDA_descriptor 対応付けられた問合せのWHERE句に代入するホスト変数を表すOracle記述子を指定します。記述子は、DESCRIBE文を使用して事前に初期化されている必要があります。代入は、位置に基づきます。この文で指定するホスト変数名は、対応付けられた問合せの変数名と異なってもかまいません。

ANSI記述子(INTO句)と一緒には使用できません。


使用上の注意

OPEN文は、行のアクティブ・セットを定義し、アクティブ・セットの最初の行の直前でカーソルを初期化します。OPEN時のホスト変数の値が文に代入されます。この文は、実際には行を取り出しません。行はFETCH文を使用して取り出されます。

カーソルを一度オープンすると、入力ホスト変数はカーソルを再オープンするまで再テストされません。入力ホスト変数およびアクティブ・セットを変更するには、カーソルを再オープンする必要があります。

プログラム内のすべてのカーソルは、プログラムを開始する場合またはCLOSE文を使用してカーソルを明示的にクローズした後にクローズ状態になります。

カーソルは事前にクローズしなくても、再オープンできます。この文の詳細は、「カーソルのオープン」を参照してください。

この例では、Pro*COBOLプログラムでOPEN文を使用する方法を示します。

     EXEC SQL DECLARE EMPCURSOR CURSOR FOR
         SELECT ENAME, EMPNO, JOB, SAL
         FROM EMP
         WHERE DEPTNO = :DEPTNO
     END-EXEC.
     EXEC SQL OPEN EMPCURSOR END-EXEC.

関連項目

CLOSE(実行可能埋込みSQL)

DECLARE CURSOR(埋込みSQLディレクティブ)

EXECUTE(実行可能埋込みSQL)

FETCH(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

OPEN DESCRIPTOR(実行可能埋込みSQL)

用途

対応付けられた問合せを評価し、USING句が示す入力ホスト変数名を問合せのWHERE句に代入して、カーソル(ANSI動的SQL方法4用)をオープンします。INTO句は、出力記述子を示します。動的SQL文でEXECUTEのかわりに使用できます。

前提条件

カーソルは、オープンする前に埋込みSQLのDECLARE CURSOR文を使用して宣言しておく必要があります。

構文

OPEN DESCRIPTOR
opena.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
array_size

integer

処理される行の数を格納するホスト変数。

処理される行数。

EXECUTEと同等の場合のみ、動的SQLに使用できます。

cursor オープンする(すでに宣言されている)カーソル。
USING DESCRIPTOR

descriptor_name 'descriptor name'

ANSI記述子の名前を格納するホスト変数またはANSI記述子の名前でANSI入力記述子を指定します。
INTO DESCRIPTOR descriptor_name 'descriptor name' ANSI記述子の名前を格納するホスト変数もしくはANSI記述子の名前でANSI出力記述子を指定します。
GLOBAL | LOCAL LOCAL(デフォルト)はファイルのスコープです。GLOBALはアプリケーションのスコープです。

使用上の注意

プリコンパイラのオプションDYNAMICにANSIを設定します。

OPEN文は、行のアクティブ・セットを定義し、アクティブ・セットの最初の行の直前でカーソルを初期化します。OPEN時のホスト変数の値が文に代入されます。 この文は、実際には行を取り出しません。行はFETCH文を使用して取り出されます。

カーソルを一度オープンすると、入力ホスト変数はカーソルを再オープンするまで再テストされません。入力ホスト変数およびアクティブ・セットを変更するには、カーソルを再オープンする必要があります。

プログラム内のすべてのカーソルは、プログラムを開始する場合またはCLOSE文を使用してカーソルを明示的にクローズした後にクローズ状態になります。

カーソルは事前にクローズしなくても、再オープンできます。この文の詳細は、「行の挿入」を参照してください。

 01 DYN-STATEMENT PIC X(58) VALUE "SELECT ENAME, EMPNO FROM EMP WHERE
       DEPTNO =:DEPTNO-DAT".
 01 DEPTNO-DAT PIC S9(9) COMP VALUE 10.
 ...
     EXEC SQL ALLOCATE DESCRIPTOR 'input-descriptor' END-EXEC.
     EXEC SQL ALLOCATE DESCRIPTOR 'output-descriptor'
     ...
     EXEC SQL PREPARE S FROM :DYN-STATEMENT END-EXEC.
     EXEC SQL DECLARE C CURSOR FOR S END-EXEC.
     ...
     EXEC SQL OPEN C USING DESCRIPTOR 'input-descriptor' END-EXEC.
     ...

関連項目

CLOSE(実行可能埋込みSQL)

DECLARE CURSOR(埋込みSQLディレクティブ)

FETCH DESCRIPTOR(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

用途

ホスト変数で指定するSQL文またはPL/SQLブロックを解析し、識別子に対応付けます。

前提条件

なし

構文

PREPARE
prepare.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
db_name CONNECT文で先に設定されるデータベース接続名を含むNULL終了文字列。省略した場合または空文字の場合は、デフォルトのデータベース接続とみなされます。
host_variable データベース接続名を格納するホスト変数。
array_size

integer

処理される行の数を格納するホスト変数。

処理される行数。

statement_id 準備済のSQL文またはPL/SQLブロックに対応付ける識別子。この識別子がすでに別の文またはブロックに割り当てられている場合は、以前の割当てが置き換えられます。
host_string 準備するSQL文またはPL/SQLブロックのテキストが値であるホスト変数。
text 実行するSQL文またはPL/SQLブロックを含むテキスト・リテラル。引用符は省略できます。
select_command SELECT文。

使用上の注意

host_stringまたはtextの変数はすべてプレースホルダです。実際のホスト変数名は、OPEN文のUSING句(入力ホスト変数)またはFETCH文のINTO句(出力ホスト変数)で割り当てます。

SQL文は一度準備すると、何回でも実行できます。

この例では、Pro*COBOL埋込みSQLプログラムでPREPARE文を使用する方法を示します。

     EXEC SQL PREPARE MYSTATEMENT FROM :MY-STRING END-EXEC.
     EXEC SQL EXECUTE MYSTATEMENT END-EXEC.

関連項目

CLOSE(実行可能埋込みSQL)

DECLARE CURSOR(埋込みSQLディレクティブ)

FETCH(実行可能埋込みSQL)

OPEN(実行可能埋込みSQL)

ROLLBACK(実行可能埋込みSQL)

用途

カレント・トランザクションで実行した作業を取り消します。この文は、インダウトの分散トランザクションの処理を手動で取り消すときにも使用できます。

前提条件

カレント・トランザクションをロールバックするには、権限は必要ありません。

ユーザーがコミットしたインダウトの分散トランザクションを手動でロールバックするには、FORCE TRANSACTIONのシステム権限が必要です。他のユーザーがコミットしたインダウトの分散トランザクションを手動でロールバックするには、FORCE ANY TRANSACTIONのシステム権限が必要です。

構文

ROLLBACK
rollb.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
db_name CONNECT文で先に設定されるデータベース接続名を含むNULL終了文字列。省略した場合または空文字の場合は、デフォルトのデータベース接続とみなされます。
host_variable データベース接続名を格納するホスト変数。

この句を省略した場合、セーブポイントはデフォルトのデータベースに対して作成されます。
WORK オプション。ANSIとの互換性のために用意されています。
TO 指定したセーブポイントまでカレント・トランザクションをロールバックします。この句を省略した場合、ROLLBACK文はトランザクション全体をロールバックします。
FORCE インダウトの分散トランザクションを手動でロールバックします。ローカルまたはグローバル・トランザクションIDを格納するtextによりトランザクションを指定します。このようなトランザクションのIDを検索するには、データ・ディクショナリ・ビューDBA_2PC_PENDINGに問合せをします。

ROLLBACK文でのFORCE句の使用はPL/SQLではサポートされていません。

RELEASE リソースをすべて解放し、アプリケーションをデータベース・サーバーから切断します。RELEASE句は、SAVEPOINT句およびFORCE句とは併用できません。
savepoint ロールバックするためのセーブポイントの名前。

使用上の注意

トランザクション(または論理作業単位)は、Oracle9iが1つの単位として扱う一連のSQL文です。トランザクションは、COMMIT文、ROLLBACK文またはデータベースへの接続後の、最初の実行SQL文から始まります。トランザクションは、COMMIT文、ROLLBACK文またはデータベースからの切断(意図的かどうかに関係なく)で終了します。Oracle9iは、データ定義言語文の処理前および処理後に暗黙的COMMIT文を発行します。

TO SAVEPOINT句を指定せずにROLLBACK文を使用すると、次の処理が実行されます。

TO SAVEPOINT句を指定してROLLBACK文を使用すると、次の処理が実行されます。

アプリケーション・プログラムでは、COMMIT文またはROLLBACK文を使用してトランザクションを明示的に終了することをお薦めします。トランザクションを明示的にコミットしなかった場合にプログラムが異常終了すると、Oracle9iはコミットされていない最後のトランザクションをロールバックします。

例I

次の文はカレント・トランザクション全体をロールバックします。

     EXEC SQL ROLLBACK END-EXEC.

例II

次の文はカレント・トランザクションをセーブポイントSP5までロールバックします。

      EXEC SQL ROLLBACK TO SAVEPOINT SP5 END-EXEC.

分散トランザクション

Oracle9iで分散オプションを使用すると、分散トランザクション、つまり複数のデータベースのデータを変更するトランザクションを実行できます。分散トランザクションをコミットまたはロールバックするには、他のトランザクションと同じようにCOMMIT文またはROLLBACK文を発行するだけで済みます。

分散トランザクションのコミット・プロセス中にネットワーク障害が発生すると、トランザクションの状態が不明、つまりインダウトになる可能性があります。そのトランザクションに関連する他のデータベースの管理者に問い合せて、ローカル・データベースのトランザクションを手動でコミットするか、ロールバックするかを決定できます。ローカル・データベースのトランザクションを手動でロールバックするには、FORCE句を指定してROLLBACK文を発行します。

インダウトのトランザクションを手動でセーブポイントまでロールバックすることはできません。

FORCE句を指定したROLLBACK文は、指定したトランザクションのみロールバックします。このような文は、カレント・トランザクションには影響しません。

例III

次の文はインダウトの分散トランザクションを手動でロールバックします。

     EXEC SQL ROLLBACK WORK FORCE '25.32.87' END-EXEC.

関連項目

COMMIT(実行可能埋込みSQL)

SAVEPOINT(実行可能埋込みSQL)

SAVEPOINT(実行可能埋込みSQL)

用途

後でロールバックする位置をトランザクション内に指定します。

前提条件

なし

構文

SAVEPOINT
savep.gifの説明

キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT セーブポイントをどのデータベースに対して作成するかを指定します。次のいずれかを使用してデータベースを指定します。
db_name すでにDECLARE DATABASE文で宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。この句を省略した場合、セーブポイントはデフォルトのデータベースに対して作成されます。
savepoint 作成するセーブポイントの名前。

使用上の注意

この文の詳細は、「SAVEPOINT文の使用」を参照してください。

この例では、埋込みSQLのSAVEPOINT文の使用方法を示します。

     EXEC SQL SAVEPOINT SAVE3 END-EXEC.

関連項目

COMMIT(実行可能埋込みSQL)

ROLLBACK(実行可能埋込みSQL)

SELECT(実行可能埋込みSQL)

用途

選択した値をホスト変数に割り当てて、1つ以上の表、ビューまたはスナップショットからデータを取り出します。

前提条件

表またはスナップショットからデータを選択するには、表またはスナップショットがユーザーのスキーマ内にあるか、あるいは表またはスナップショットに対してSELECTの権限を持っている必要があります。

ビューの実表から行を選択するには、ビューが属するスキーマの所有者が、実表に対してSELECTの権限を持っている必要があります。また、ビューがユーザー所有のスキーマ以外のスキーマ内にある場合は、ビューに対してSELECTの権限を持っている必要があります。

SELECT ANY TABLEシステム権限を使用すると、すべての表、スナップショットまたはビューの実表からデータを選択できます。

構文

SELECT
select_a.gifの説明

SELECT


キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT どのデータベースに対してSELECT文を発行するかを指定します。次のいずれかを使用してデータベースを指定します。
db_name すでにDECLARE DATABASE文で宣言されているデータベース識別子。
host_variable すでに宣言されているdb_name値のホスト変数。

この句を省略した場合、SELECT文はデフォルトのデータベースに対して発行されます。
select_list 非埋込みSELECT文と同じですが、リテラルのかわりにホスト変数を使用できます。
INTO SELECT文が戻すデータを受け取る出力ホスト変数およびオプションの標識変数を指定します。これらの変数は、すべてスカラーか、すべて配列であることが必要です。ただし、配列は同じサイズでなくてもかまいません。
WHERE 戻される行を、条件がTRUEの行のみに制限します。『Oracle Database SQL言語リファレンス』のconditionの構文説明を参照してください。conditionには、ホスト変数は使用できますが、標識変数は使用できません。これらのホスト変数は、スカラーと配列のどちらでもかまいません。

その他のキーワードおよびパラメータは、非埋込みSQLのSELECT文と同じです。

使用上の注意

WHERE句の条件を満たす行が存在しない場合、行は取り出されず、Oracle9iはSQLCAのSQLCODEコンポーネントを使用してエラー・コードを戻します。

SELECT文ではコメントを使用して指示またはヒントをOracle9 i のオプティマイザに渡すことができます。オプティマイザはヒントを使用して文の実行計画を選択します。ヒントの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

この例では、埋込みSQLのSELECT文の使用方法を示します。

     EXEC SQL SELECT ENAME, SAL + 100, JOB
         INTO :ENAME, :SAL, :JOB
         FROM EMP
         WHERE EMPNO = :EMPNO
     END-EXEC.

関連項目

DECLARE CURSOR(埋込みSQLディレクティブ)

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

EXECUTE(実行可能埋込みSQL)

FETCH(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

SET DESCRIPTOR(実行可能埋込みSQL)

用途

ANSI動的SQL文を使用して、ホスト変数の記述子領域内の情報を設定します。

前提条件

DESCRIBE DESCRIPTORの後で使用します。

構文

SET DESCRIPTOR


item_nameのみ次の中から選択できます。

SET DESCRIPTOR


キーワードおよびパラメータ

キーワードおよびパラメータ 説明
array_size

integer

処理される行の数を格納するホスト変数。

処理される行数。配列サイズの句は、DATA、RETURNED_LENGTHおよびINDICATORの項目名でのみ使用できます。

GLOBAL | LOCAL LOCAL(デフォルト)はファイルのスコープです。GLOBALはアプリケーションのスコープです。
descriptor_name

'descriptor name'

割り当てられたANSI記述子名を格納するホスト変数。

割り当てられたANSI記述子の名前。

COUNT 入力および出力変数の合計数です。
VALUE 文中で参照されるホスト変数の位置です。
item_name item_namesのリストおよび説明は、表10-6および表10-7を参照してください。
host_var 入力および出力変数の合計数を格納するホスト変数。
integer 入力および出力変数の合計数。
host_var 項目の設定に使用するホスト変数。
REF 参照セマンティクスが使用されます。RETURNED_LENGTH、DATAおよびINDICATORの項目名以外では使用できません。

RETURNED_LENGTHを設定するときに使用する必要があります。


使用上の注意

DYNAMIC=ANSIプリコンパイラ・オプションを使用してください。クライアント側でUnicodeをサポートするには、CHARACTER_SET_NAMEにUTF16を設定します。記述子項目名の表などの詳細は、「SET DESCRIPTOR」を参照してください。

     EXEC SQL SET DESCRIPTOR GLOBAL :mydescr COUNT = 3 END-EXEC.

関連項目

ALLOCATE DESCRIPTOR(実行可能埋込みSQL)

DEALLOCATE DESCRIPTOR(埋込みSQL文)

DESCRIBE DESCRIPTOR(実行可能埋込みSQL)

GET DESCRIPTOR(実行可能埋込みSQL)

PREPARE(実行可能埋込みSQL)

UPDATE(実行可能埋込みSQL)

用途

表またはビューの実表の既存の値を変更します。

前提条件

表またはスナップショットの値を更新するには、表がユーザーのスキーマ内にあるか、または表に対してUPDATEの権限を持っている必要があります。

ビューの実表の値を更新するには、ビューが属するスキーマの所有者が、実表に対してUPDATEの権限を持っている必要があります。また、ビューがユーザーのスキーマ以外のスキーマ内にある場合は、ビューに対してUPDATEの権限を持っている必要があります。

UPDATE ANY TABLEシステム権限を使用すると、すべての表またはビューの実表の値を更新できます。

構文

UPDATE


DML RETURNING句の構文を示します。

UPDATE


キーワードおよびパラメータ

キーワードおよびパラメータ 説明
AT どのデータベースに対してUPDATE文を発行するかを指定します。次のいずれかを使用してデータベースを指定します。
dbname すでにDECLARE DATABASE文で宣言されているデータベース識別子。
host_variable すでに宣言されているdbname値のホスト変数。
- この句を省略した場合、UPDATE文はデフォルトのデータベースに対して発行されます。
FOR: host_integer SET句およびWHERE句が配列ホスト変数を含む場合に、UPDATE文を実行する回数を制限します。この句を省略した場合、Oracle9iは最小の配列の各コンポーネントにつき1回ずつ文を実行します。
schema 表またはビューを含むスキーマ。schemaを省略した場合、Oracle9iは表またはビューがユーザーのスキーマ内にあるとみなします。
table view 更新する表の名前。viewを指定する場合、Oracle9iではビューのベース表を更新します。
dblink 表またはビューがあるリモート・データベースへのデータベース・リンクの完全または部分的な名前。データベース・リンク参照の情報は、『Oracle Database SQL言語リファレンス』を参照してください。分散オプションでOracle9iを使用している場合のみ、データベース・リンクを使用してリモートの表またはビューを更新できます。
part_name 表内のパーティションの名前。
alias 文の他の場所にある表、ビューまたは副問合せを参照するのに使用する名前です。
column 表またはビューで更新する列の名前。SET句から表の列を削除する場合、その列の値は変更されません。
expr 対応する列に割り当てる新しい値。この式には、ホスト変数およびオプションの標識変数を含めることができます。『Oracle Database SQL言語リファレンス』のexprの構文を参照してください。
subquery_1 対応する列に割り当てられた新しい値を戻す副問合せ。副問合せの構文は、『Oracle Database SQL言語リファレンス』のSELECTに関する項を参照してください。
subquery_2 対応する列に割り当てられた新しい値を戻す副問合せ。副問合せの構文は、『Oracle Database SQL言語リファレンス』のSELECTに関する項を参照してください。
WHERE 表またはビューで更新する行を指定します。
- condition
- CURRENT OF
- この句を完全に省略した場合、Oracle9iは表またはビューのすべての行を更新します。
DML RETURNING句 詳細は、「DML RETURNING句」を参照してください。

使用上の注意

SET句およびWHERE句に含まれるホスト変数は、すべてスカラーか、またはすべて配列であることが必要です。変数がスカラーの場合、Oracle9iはUPDATE文を1回のみ実行します。変数が配列の場合、Oracle9iは配列のコンポーネント・セットごとに1回ずつこの文を実行します。1回の実行で、0行または1行、複数行を更新できます。

配列ホスト変数は、サイズが異なってもかまいません。この場合、Oracle9iが文を実行する回数は、次のうち小さい方の値によって決定します。

最小の配列のサイズ

更新された行の累積数は、SQLCAのSQLERRDコンポーネントの第3要素に設定されて戻されます。入力ホスト変数として配列を使用した場合、この数値はUPDATE文で処理された配列のすべてのコンポーネントにおよぶ更新数の合計を示します。この条件を満たす行が存在しない場合、行は更新されず、Oracle9iはSQLCAのSQLCODE要素を通じてエラー・メッセージを戻します。WHERE句を省略した場合は、すべての行が更新され、Oracle9iはSQLCAのSQLWARN要素の第5コンポーネントに警告フラグを設定します。

UPDATE文ではコメントを使用して指示またはヒントをOracle9 i のオプティマイザに渡すことができます。オプティマイザはヒントを使用して文の実行計画を選択します。 ヒントの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

この文の詳細は、「基本的なSQL文」および第3章「データベースの概念」を参照してください。

次の例では、埋込みSQLのUPDATE文の使用方法を示します。

     EXEC SQL UPDATE EMP
         SET SAL = :SAL, COMM = :COMM INDICATOR :COMM-IND
         WHERE ENAME = :ENAME
     END-EXEC.

     EXEC SQL UPDATE EMP
         SET (SAL, COMM) =
             (SELECT AVG(SAL)*1.1, AVG(COMM)*1.1
             FROM EMP)
         WHERE ENAME = 'JONES'
     END-EXEC.

関連項目

DECLARE DATABASE(Oracle埋込みSQLディレクティブ)

VAR(Oracle埋込みSQLディレクティブ)

用途

ホスト変数の同値化を実行するか、特定のOracle9i外部データ型をこのホスト変数に割り当て、デフォルトのデータ型割当てをオーバーライドします。また、オプションのCONVBUFSZ句を使用して、キャラクタ・セット変換用のバッファ・サイズを指定します。

前提条件

ホスト変数は、埋込みSQLプログラム内であらかじめ宣言しておく必要があります。

構文

VAR


キーワードおよびパラメータ

キーワードおよびパラメータ 説明
host_variable Oracle9iの外部データ型を割り当てるホスト変数。
dtyp Pro*COBOLによって認識されるOracle9iの外部データ型(Oracle9iの内部データ型ではありません)。データ型には、長さ、精度または位取りを含めることができます。この外部データ型がhost_variableに割り当てられます。外部データ型のリストは、「外部データ型」を参照してください。
size Oracle9iランタイム・ライブラリ内のバッファのサイズ(バイト単位)です。これを使用して、host_variableのキャラクタ・セットを変換します。

使用上の注意

データ型の同値化は次の目的に有効です。

Oracleデータ型の詳細は、「サンプル・プログラム4: データ型の同値化」を参照してください。

この例では、ホスト変数DEPT_NAMEをデータ型VARCHAR2に、ホスト変数BUFFERをデータ型RAW(200)に同値化しています。

     EXEC SQL BEGIN DECLARE SECTION END-EXEC.
     ...
     01 DEPT-NAME  PIC X(15).
* -- default datatype is CHAR
     EXEC SQL VAR DEPT-NAME IS VARCHAR2 END-EXEC.
* -- reset to STRING
     ...
     01 BUFFER-VAR.
          05 BUFFER  PIC X(200).
* -- default datatype is CHAR
     EXEC SQL VAR BUFFER IS RAW(200) END-EXEC.
* -- refer to RAW
     ...
     EXEC SQL END DECLARE SECTION END-EXEC.

関連項目

なし

WHENEVER(埋込みSQLディレクティブ)

用途

埋込みSQLプログラムの実行時に、エラーまたは警告が発生した場合の処置を指定します。

前提条件

なし

構文

WHENEVER


DO.CALL.CLAUSEの構文を次に示します。

WHENEVER


キーワードおよびパラメータ

キーワードおよびパラメータ 説明
NOT FOUND | NOTFOUND エラー・コード+1403(または、MODE=ANSIのときは+100コード)をSQLCODEに戻す例外状態を示します。
SQLERROR 負のリターン・コードを戻す状態を示します。
SQLWARNING 致命的でない警告状態を示します。
CONTINUE プログラムが次の文に進む必要があることを指示します。
GOTO | GO TO プログラムにlabelで指定した文に分岐するように指示します。
STOP プログラムの実行を停止します。
DO PERFORM プログラムがlabelで指定した段落または項を実行する必要があることを示します。
DO CALL プログラムがサブプログラムを実行する必要があることを示します。
subprogram_name 実行するサブプログラムです。二重引用符(")で囲む必要があります。
USING サブプログラムのパラメータです。
param 空白で区切られたサブプログラム・パラメータのリストです。

WHENEVERディレクティブを使用すると、埋込みSQL文でエラーまたは警告が発生したときに、プログラムから指定したアクションの1つを実行できます。

WHENEVER文のスコープは論理的にではなく、位置的に適用されます。WHENEVER文は、プログラム論理の流れではなく、ソース・ファイル内で物理的に後続するすべての埋込みSQL文に適用されます。WHENEVER文は、同じ条件をチェックする別のWHENEVER文に置換されるまで有効です。

このディレクティブの条件およびアクションの例は、「WHENEVERディレクティブ」を参照してください。

埋込みSQLのWHENEVERディレクティブとSQL*PlusコマンドのWHENEVERディレクティブを混同しないでください。

次の例では、Pro*COBOL埋込みSQLプログラムでWHENEVERディレクティブを使用する方法を示します。

     EXEC SQL WHENEVER NOT FOUND CONTINUE END-EXEC.
     ...
     EXEC SQL WHENEVER SQLERROR GOTO SQL-ERROR END-EXEC.
     ...
 SQL-ERROR.
     EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.
     DISPLAY "ORACLE ERROR DETECTED.".
     EXEC SQL ROLLBACK RELEASE END-EXEC.
     STOP RUN.

関連項目

なし