Top Banner
Pro*C/C++ Precompiler プログラマーズ・ガイド リリース 9.2 2002 7 部品番号:J06297-01
1002

Pro*C/C++ Precompiler ... - otndnld.oracle.co.jpotndnld.oracle.co.jp/document/oracle9i/920/generic/appdev/J06297-01.pdf · Oracle Corporation, 500 Oracle Parkway, Redwood City, CA

Aug 29, 2019

Download

Documents

trinhnhu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Pro*C/C++ Precompiler

    プログラマーズ・ガイド

    リリース 9.2

    2002 年 7 月

    部品番号:J06297-01

  • Pro*C/C++ Precompiler プログラマーズ・ガイド , リリース 9.2

    部品番号:J06297-01

    原本名:Pro*C/C++ Precompiler Programmer’s Guide, Release 9.2

    原本部品番号:A96108-01(Vol.1)、A97263-01(Vol.2)

    原本著者:Syed Mujeeb Ahmed, Jack Melnick, Neelam Singh, Tim Smith

    原本協力者:Ruth Baylis, Paul Lane, Bill Bailey, Subhranshu Banerjee, Julie Basu, Brian Becker, Beethoven Cheng, Michael Chiocca, Pierre Dufour, Nancy Ikeda, Alex Keh, Thomas Kurian, Shiao-Yen Lin, Vidya Nagaraj, Jacqui Pons, Ajay Popat, Ekkehard Rohwedder, Pamela Rothman, Alan Thiesen, Gael Stevens, Valarie Moore

    Copyright © 1996, 2002 Oracle Corporation. All rights reserved.

    Printed in Japan.

    制限付権利の説明

    プログラム(ソフトウェアおよびドキュメントを含む)の使用、複製または開示は、オラクル社との契約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権に関する法律により保護されています。

    当プログラムのリバース・エンジニアリング等は禁止されております。

    このドキュメントの情報は、予告なしに変更されることがあります。オラクル社は本ドキュメントの無謬性を保証しません。

    * オラクル社とは、Oracle Corporation(米国オラクル)または日本オラクル株式会社(日本オラクル)を指します。

    危険な用途への使用について

    オラクル社製品は、原子力、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーションを用途として開発されておりません。オラクル社製品を上述のようなアプリケーションに使用することについての安全確保は、顧客各位の責任と費用により行ってください。万一かかる用途での使用によりクレームや損害が発生いたしましても、日本オラクル株式会社と開発元である Oracle Corporation(米国オラクル)およびその関連会社は一切責任を負いかねます。 当プログラムを米国国防総省の米国政府機関に提供する際には、『Restricted Rights』と共に提供してください。この場合次の Notice が適用されます。

    Restricted Rights Notice

    Programs delivered subject to the DOD FAR Supplement are "commercial computer software" and use, duplication, and disclosure of the Programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are "restricted computer software" and use, duplication, and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065.

    このドキュメントに記載されているその他の会社名および製品名は、あくまでその製品および会社を識別する目的にのみ使用されており、それぞれの所有者の商標または登録商標です。

  • 目次目次目次目次

    はじめにはじめにはじめにはじめに ...................................................................................................................................................................... xxvii

    対象読者 ............................................................................................................................................................... xxviiiこのマニュアルの構成 ....................................................................................................................................... xxviii関連文書 ................................................................................................................................................................. xxxi表記規則 ................................................................................................................................................................ xxxii

    Pro*C/C++ の新機能の新機能の新機能の新機能 .......................................................................................................................................... xxxvOracle9i リリース 2(9.2)での Pro*C/C++ プリコンパイラの新機能 .................................................... xxxviOracle9i リリース 1(9.0.1)での Pro*C/C++ プリコンパイラの新機能 ................................................. xxxviOracle8i リリース 8.1.5 での Pro*C/C++ プリコンパイラの新機能 ......................................................... xxxviiOracle8i リリース 8.1.4 での Pro*C/C++ プリコンパイラの新機能 ......................................................... xxxviiOracle8i リリース 8.1.3 での Pro*C/C++ プリコンパイラの新機能 ......................................................... xxxvii

    1 概要概要概要概要Oracle プリコンパイラプリコンパイラプリコンパイラプリコンパイラ .......................................................................................................................................... 1-2Oracle Pro*C/C++ プリコンパイラを使用する理由プリコンパイラを使用する理由プリコンパイラを使用する理由プリコンパイラを使用する理由 ......................................................................................... 1-4SQL を使用する理由を使用する理由を使用する理由を使用する理由 .............................................................................................................................................. 1-4PL/SQL を使用する理由を使用する理由を使用する理由を使用する理由 ....................................................................................................................................... 1-5Pro*C/C++ プリコンパイラの利点プリコンパイラの利点プリコンパイラの利点プリコンパイラの利点 ...................................................................................................................... 1-6よくある質問(よくある質問(よくある質問(よくある質問(FAQ)))) ............................................................................................................................................ 1-8

    VARCHAR について説明してください。 ................................................................................................... 1-8

    Pro*C/C++ は Oracle Call Interface のコールを生成しますか。 ............................................................. 1-8

    Pro*C/C++ を使用せず、SQLLIB コールを使用してコーディングできますか。 ................................ 1-9

    PL/SQL のストアド・プロシージャを Pro*C/C++ プログラムからコールできますか。 .................. 1-9

    C++ のコードを作成し、Pro*C/C++ を使用してプリコンパイルできますか。 ................................. 1-9

    i

  • SQL 文の任意の場所でバインド変数を使用できますか。 ........................................................................ 1-9

    Pro*C/C++ の文字処理がよくわかりません。 ......................................................................................... 1-10

    文字ポインタについて何か特別なことはありますか。 ........................................................................... 1-10

    Pro*C/C++ で SPOOL が動作しない理由を説明してください。 .......................................................... 1-10

    サンプル・プログラムのオンライン版はどこにありますか。 ............................................................... 1-10

    アプリケーションをコンパイルしてリンクする方法を教えてください。 ........................................... 1-11

    Pro*C/C++ では構造体をホスト変数として使用できますか。 ............................................................. 1-11

    再帰関数内で埋込み SQL を使用した場合、その再帰関数を Pro*C/C++ で使用できますか。 ...... 1-11

    Pro*C/C++ のすべてのリリースを、Oracle サーバーのすべてのバージョンで使用できますか。 1-11

    アプリケーションを Oracle9i で実行すると、必ず ORA-01405 エラー(フェッチした列の値がNULL です)が発生します。 ...................................................................................................................... 1-12

    すべての SQLLIB 関数はプライベート関数ですか。 ............................................................................... 1-12

    新しいオブジェクト型は Oracle9i でどのようにサポートされていますか。 ...................................... 1-13

    互換性、アップグレードおよび移行 ......................................................................................................... 1-14

    2 プリコンパイラの概要プリコンパイラの概要プリコンパイラの概要プリコンパイラの概要埋込み埋込み埋込み埋込み SQL プログラムの主な概要プログラムの主な概要プログラムの主な概要プログラムの主な概要 ..................................................................................................................... 2-2

    埋込み SQL 文 ................................................................................................................................................. 2-2

    埋込み SQL の構文 ......................................................................................................................................... 2-4

    静的 SQL 文と動的 SQL 文の対比 ............................................................................................................... 2-5

    埋込み PL/SQL ブロック .............................................................................................................................. 2-5

    ホスト変数およびインジケータ変数 ........................................................................................................... 2-5

    Oracle のデータ型 .......................................................................................................................................... 2-6

    配列 ................................................................................................................................................................... 2-6

    データ型の同値化 ........................................................................................................................................... 2-6

    プライベート SQL 領域、カーソルおよびアクティブ・セット ............................................................. 2-7

    トランザクション ........................................................................................................................................... 2-7

    エラーおよび警告 ........................................................................................................................................... 2-8

    埋込み埋込み埋込み埋込み SQL アプリケーションの開発ステップアプリケーションの開発ステップアプリケーションの開発ステップアプリケーションの開発ステップ ................................................................................................ 2-9プログラミングのガイドラインプログラミングのガイドラインプログラミングのガイドラインプログラミングのガイドライン ......................................................................................................................... 2-10

    コメント ......................................................................................................................................................... 2-10

    定数 ................................................................................................................................................................. 2-10

    宣言文 ............................................................................................................................................................. 2-10

    デリミタ ......................................................................................................................................................... 2-11

    ファイルの長さ ............................................................................................................................................. 2-12

    ii

  • 関数プロトタイプ ......................................................................................................................................... 2-12

    ホスト変数名 ................................................................................................................................................. 2-13

    行の継続 ......................................................................................................................................................... 2-13

    行の長さ ......................................................................................................................................................... 2-13

    MAXLITERAL のデフォルト値 ................................................................................................................. 2-13

    演算子 ............................................................................................................................................................. 2-14

    文の終了記号 ................................................................................................................................................. 2-14

    条件付きプリコンパイル条件付きプリコンパイル条件付きプリコンパイル条件付きプリコンパイル ..................................................................................................................................... 2-15記号の定義 ..................................................................................................................................................... 2-15

    SELECT 文の例 ............................................................................................................................................. 2-16

    分割プリコンパイル分割プリコンパイル分割プリコンパイル分割プリコンパイル ............................................................................................................................................. 2-16ガイドライン ................................................................................................................................................. 2-16

    コンパイルおよびリンクコンパイルおよびリンクコンパイルおよびリンクコンパイルおよびリンク ..................................................................................................................................... 2-17サンプル表サンプル表サンプル表サンプル表 ............................................................................................................................................................. 2-18

    サンプル・データ ......................................................................................................................................... 2-18

    サンプル・プログラムサンプル・プログラムサンプル・プログラムサンプル・プログラム : 単純な問合せ単純な問合せ単純な問合せ単純な問合せ .............................................................................................................. 2-19

    3 データベースの概要データベースの概要データベースの概要データベースの概要データベースへの接続データベースへの接続データベースへの接続データベースへの接続 ........................................................................................................................................... 3-2

    ALTER AUTHORIZATION 句を使用したパスワードの変更 ................................................................ 3-3

    Oracle Net を使用した接続 ........................................................................................................................... 3-4

    自動接続 ........................................................................................................................................................... 3-4

    高度な接続オプション高度な接続オプション高度な接続オプション高度な接続オプション ........................................................................................................................................... 3-6予備知識 ........................................................................................................................................................... 3-6

    同時ログイン ................................................................................................................................................... 3-6

    デフォルトのデータベースおよび接続 ....................................................................................................... 3-8

    明示的接続 ....................................................................................................................................................... 3-8

    暗黙的接続 ..................................................................................................................................................... 3-14

    トランザクション用語の定義トランザクション用語の定義トランザクション用語の定義トランザクション用語の定義 ............................................................................................................................. 3-15トランザクションがデータベースを保護する方法トランザクションがデータベースを保護する方法トランザクションがデータベースを保護する方法トランザクションがデータベースを保護する方法 ......................................................................................... 3-16トランザクションの開始および終了方法トランザクションの開始および終了方法トランザクションの開始および終了方法トランザクションの開始および終了方法 ......................................................................................................... 3-17COMMIT 文の使用文の使用文の使用文の使用 ............................................................................................................................................. 3-17SAVEPOINT 文の使用文の使用文の使用文の使用 ........................................................................................................................................ 3-18ROLLBACK 文文文文 ..................................................................................................................................................... 3-20

    文レベル・ロールバック ............................................................................................................................. 3-22

    RELEASE オプションオプションオプションオプション .......................................................................................................................................... 3-22

    iii

  • SET TRANSACTION 文文文文 .................................................................................................................................... 3-23デフォルト・ロックの上書きデフォルト・ロックの上書きデフォルト・ロックの上書きデフォルト・ロックの上書き ............................................................................................................................. 3-24

    FOR UPDATE OF の使用 ............................................................................................................................ 3-24

    LOCK TABLE の使用 ................................................................................................................................... 3-25

    コミットにまたがるフェッチコミットにまたがるフェッチコミットにまたがるフェッチコミットにまたがるフェッチ ............................................................................................................................. 3-26分散トランザクションの処理分散トランザクションの処理分散トランザクションの処理分散トランザクションの処理 ............................................................................................................................. 3-26ガイドラインガイドラインガイドラインガイドライン ......................................................................................................................................................... 3-27

    アプリケーションの設計 ............................................................................................................................. 3-27

    ロックの取得 ................................................................................................................................................. 3-27

    PL/SQL の使用方法 ..................................................................................................................................... 3-28

    4 データ型とホスト変数データ型とホスト変数データ型とホスト変数データ型とホスト変数Oracle のデータ型のデータ型のデータ型のデータ型 .................................................................................................................................................. 4-2

    内部データ型 ................................................................................................................................................... 4-2

    外部データ型 ................................................................................................................................................... 4-4

    その他の外部データ型 ................................................................................................................................. 4-12

    ホスト変数ホスト変数ホスト変数ホスト変数 ............................................................................................................................................................. 4-14ホスト変数の宣言 ......................................................................................................................................... 4-14

    ホスト変数の参照 ......................................................................................................................................... 4-18

    インジケータ変数インジケータ変数インジケータ変数インジケータ変数 .............................................................................................................................................. 4-19INDICATOR キーワード ............................................................................................................................ 4-19

    インジケータ変数の使用例 ......................................................................................................................... 4-20

    インジケータ変数のガイドライン ............................................................................................................. 4-21

    Oracle 制限事項 ............................................................................................................................................ 4-21

    VARCHAR 変数変数変数変数 .................................................................................................................................................. 4-22VARCHAR 変数の宣言 ............................................................................................................................... 4-22

    VARCHAR 変数の参照 ............................................................................................................................... 4-23

    VARCHAR 変数に NULL を戻す .............................................................................................................. 4-24

    VARCHAR 変数を使用した NULL の挿入 .............................................................................................. 4-24

    関数への VARCHAR 変数の受渡し .......................................................................................................... 4-24

    VARCHAR 配列コンポーネントの長さを調べる方法 ........................................................................... 4-25

    サンプル・プログラム : sqlvcp() の使用 ................................................................................................... 4-26

    カーソル変数カーソル変数カーソル変数カーソル変数 ......................................................................................................................................................... 4-29カーソル変数の宣言 ..................................................................................................................................... 4-30

    カーソル変数の割当て ................................................................................................................................. 4-30

    iv

  • カーソル変数のオープン ............................................................................................................................. 4-31

    カーソル変数のクローズと解放 ................................................................................................................. 4-33

    OCI でのカーソル変数の使用(リリース 7 のみ) .................................................................................. 4-34

    制限 ................................................................................................................................................................. 4-35

    例 : cv_demo.sql および sample11.pc ........................................................................................................ 4-36

    コンテキスト変数コンテキスト変数コンテキスト変数コンテキスト変数 ................................................................................................................................................. 4-39ユニバーサルユニバーサルユニバーサルユニバーサル ROWID ......................................................................................................................................... 4-41

    SQLRowidGet() ............................................................................................................................................ 4-42

    ホスト構造体ホスト構造体ホスト構造体ホスト構造体 ......................................................................................................................................................... 4-43ホスト構造体と配列 ..................................................................................................................................... 4-44

    PL/SQL レコード ......................................................................................................................................... 4-45

    ネストした構造体と共用体 ......................................................................................................................... 4-45

    ホスト・インジケータ構造体 ..................................................................................................................... 4-45

    サンプル・プログラム : カーソルとホスト構造体 .................................................................................. 4-46

    ポインタ変数ポインタ変数ポインタ変数ポインタ変数 ......................................................................................................................................................... 4-49ポインタ変数の宣言 ..................................................................................................................................... 4-49

    ポインタ変数の参照 ..................................................................................................................................... 4-49

    構造体ポインタ ............................................................................................................................................. 4-50

    グローバリゼーション・サポートグローバリゼーション・サポートグローバリゼーション・サポートグローバリゼーション・サポート ..................................................................................................................... 4-51NCHAR 変数変数変数変数 ........................................................................................................................................................ 4-53

    CHARACTER SET [IS] NCHAR_CS ......................................................................................................... 4-53

    環境変数 NLS_NCHAR ............................................................................................................................... 4-54

    VAR 文での CONVBUFSZ 句 .................................................................................................................... 4-54

    埋込み SQL 内の文字列 ............................................................................................................................... 4-55

    文字列の制限事項 ......................................................................................................................................... 4-55

    インジケータ変数 ......................................................................................................................................... 4-55

    5 高度なトピック高度なトピック高度なトピック高度なトピック文字データ文字データ文字データ文字データ ............................................................................................................................................................... 5-2

    プリコンパイラ・オプション CHAR_MAP .............................................................................................. 5-2

    CHAR_MAP オプションのインラインでの使用方法 .............................................................................. 5-3

    DBMS オプションおよび CHAR_MAP オプションの影響 ..................................................................... 5-3

    VARCHAR 変数およびポインタ ................................................................................................................. 5-8

    Unicode 変数 ................................................................................................................................................... 5-9

    データ型変換データ型変換データ型変換データ型変換 ......................................................................................................................................................... 5-12

    v

  • データ型の同値化データ型の同値化データ型の同値化データ型の同値化 ................................................................................................................................................. 5-12ホスト変数の同値化 ..................................................................................................................................... 5-12

    ユーザー定義型同値化 ................................................................................................................................. 5-14

    CHARF 外部データ型 .................................................................................................................................. 5-15

    EXEC SQL VAR および TYPE ディレクティブ ....................................................................................... 5-15

    例 : データ型の同値化(sample4.pc) ........................................................................................................ 5-16

    C プリプロセッサプリプロセッサプリプロセッサプリプロセッサ ................................................................................................................................................. 5-29Pro*C/C++ プリプロセッサの機能 ........................................................................................................... 5-29

    プリプロセッサ・ディレクティブ ............................................................................................................. 5-30

    ORA_PROC マクロ ...................................................................................................................................... 5-31

    ヘッダー・ファイルの格納場所の指定 ..................................................................................................... 5-31

    プリプロセッサの例 ..................................................................................................................................... 5-32

    #include に使用できない SQL 文 ............................................................................................................... 5-34

    SQLCA、ORACA および SQLDA の組込み ........................................................................................... 5-34

    EXEC SQL INCLUDE および #include のまとめ .................................................................................... 5-35

    定義済みマクロ ............................................................................................................................................. 5-36

    インクルード・ファイル ............................................................................................................................. 5-36

    プリコンパイル済みヘッダー・ファイルプリコンパイル済みヘッダー・ファイルプリコンパイル済みヘッダー・ファイルプリコンパイル済みヘッダー・ファイル ......................................................................................................... 5-37プリコンパイル済みヘッダー・ファイルの作成 ..................................................................................... 5-37

    プリコンパイル済みヘッダー・ファイルの使用 ..................................................................................... 5-38

    例 ..................................................................................................................................................................... 5-38

    オプションの効果 ......................................................................................................................................... 5-40

    使用上の注意 ................................................................................................................................................. 5-43

    Oracle プリプロセッサプリプロセッサプリプロセッサプリプロセッサ ........................................................................................................................................ 5-43記号の定義 ..................................................................................................................................................... 5-44

    Oracle プリプロセッサの例 ........................................................................................................................ 5-44

    数値定数の評価数値定数の評価数値定数の評価数値定数の評価 ..................................................................................................................................................... 5-45Pro*C/C++ での数値定数 ........................................................................................................................... 5-45

    数値定数の規則および例 ............................................................................................................................. 5-46

    OCI リリースリリースリリースリリース 8 のののの SQLLIB 拡張相互運用性拡張相互運用性拡張相互運用性拡張相互運用性 ................................................................................................... 5-47OCI リリース 8 環境でのランタイム・コンテキスト ............................................................................ 5-47

    OCI リリース 8 環境ハンドルのパラメータ ............................................................................................ 5-47

    OCI リリースリリースリリースリリース 8 へのインタフェースへのインタフェースへのインタフェースへのインタフェース ................................................................................................................ 5-48SQLEnvGet() ................................................................................................................................................. 5-49SQLSvcCtxGet() ............................................................................................................................................ 5-49

    OCI リリース 8 コールの埋込み ................................................................................................................ 5-50

    vi

  • OCI リリースリリースリリースリリース 7 コールの埋込みコールの埋込みコールの埋込みコールの埋込み ........................................................................................................................ 5-52LDA の設定 ................................................................................................................................................... 5-52

    リモートの複数接続 ..................................................................................................................................... 5-53

    SQLLIB パブリック関数の新しい名前パブリック関数の新しい名前パブリック関数の新しい名前パブリック関数の新しい名前 ............................................................................................................. 5-54X/Open アプリケーションの開発アプリケーションの開発アプリケーションの開発アプリケーションの開発 ...................................................................................................................... 5-57

    Oracle 固有の問題 ........................................................................................................................................ 5-58

    6 埋込み埋込み埋込み埋込み SQLホスト変数ホスト変数ホスト変数ホスト変数 ............................................................................................................................................................... 6-2

    出力ホスト変数および入力ホスト変数 ....................................................................................................... 6-2

    インジケータ変数インジケータ変数インジケータ変数インジケータ変数 ................................................................................................................................................... 6-4NULL 値の挿入 .............................................................................................................................................. 6-5

    戻された NULL 値 ......................................................................................................................................... 6-5

    NULL 値のフェッチ ...................................................................................................................................... 6-6

    NULL のテスト .............................................................................................................................................. 6-6

    切り捨てられた値 ........................................................................................................................................... 6-6

    基本的な基本的な基本的な基本的な SQL 文文文文 ..................................................................................................................................................... 6-7SELECT 文 ....................................................................................................................................................... 6-9

    INSERT 文 ..................................................................................................................................................... 6-10

    UPDATE 文 ................................................................................................................................................... 6-11

    DELETE 文 .................................................................................................................................................... 6-11

    WHERE 句 ..................................................................................................................................................... 6-12

    DML RETURNING 句句句句 ....................................................................................................................................... 6-12カーソルカーソルカーソルカーソル ................................................................................................................................................................. 6-13

    DECLARE CURSOR 文 ............................................................................................................................... 6-14

    OPEN 文 ........................................................................................................................................................ 6-15

    FETCH 文 ...................................................................................................................................................... 6-15

    CLOSE 文 ....................................................................................................................................................... 6-16

    スクロール可能カーソルスクロール可能カーソルスクロール可能カーソルスクロール可能カーソル ..................................................................................................................................... 6-17スクロール可能カーソルの使用方法 ......................................................................................................... 6-17

    CLOSE_ON_COMMIT プリコンパイラ・オプション ........................................................................... 6-19

    PREFETCH プリコンパイラ・オプション ............................................................................................... 6-19

    オプティマイザ・ヒントオプティマイザ・ヒントオプティマイザ・ヒントオプティマイザ・ヒント ..................................................................................................................................... 6-20ヒントの発行 ................................................................................................................................................. 6-21

    vii

  • CURRENT OF 句句句句 ................................................................................................................................................. 6-21制限 ................................................................................................................................................................. 6-22

    カーソル文カーソル文カーソル文カーソル文 ............................................................................................................................................................. 6-22スクロール不可カーソルを使用する完全な例スクロール不可カーソルを使用する完全な例スクロール不可カーソルを使用する完全な例スクロール不可カーソルを使用する完全な例 ................................................................................................. 6-23スクロール可能カーソルを使用する完全な例スクロール可能カーソルを使用する完全な例スクロール可能カーソルを使用する完全な例スクロール可能カーソルを使用する完全な例 ................................................................................................. 6-25位置付け更新位置付け更新位置付け更新位置付け更新 ......................................................................................................................................................... 6-27

    7 埋込み埋込み埋込み埋込み PL/SQLPL/SQL の利点の利点の利点の利点 ....................................................................................................................................................... 7-2

    パフォーマンス向上 ....................................................................................................................................... 7-2

    Oracle との統合 .............................................................................................................................................. 7-2

    カーソル FOR ループ ..................................................................................................................................... 7-3

    プロシージャとファンクション ................................................................................................................... 7-3

    パッケージ ....................................................................................................................................................... 7-4

    PL/SQL 表 ....................................................................................................................................................... 7-5

    ユーザー定義のレコード ............................................................................................................................... 7-6

    埋込み埋込み埋込み埋込み PL/SQL ブロックブロックブロックブロック ...................................................................................................................................... 7-7ホスト変数ホスト変数ホスト変数ホスト変数 ............................................................................................................................................................... 7-8

    例 : PL/SQL でのホスト変数の使用 ............................................................................................................ 7-8

    複雑な例 ......................................................................................................................................................... 7-10

    VARCHAR 疑似型 ....................................................................................................................................... 7-12

    制限 ................................................................................................................................................................. 7-13

    インジケータ変数インジケータ変数インジケータ変数インジケータ変数 ................................................................................................................................................. 7-13NULL の処理 ................................................................................................................................................ 7-14

    切り捨てられた値 ......................................................................................................................................... 7-15

    ホスト配列ホスト配列ホスト配列ホスト配列 ............................................................................................................................................................. 7-15ARRAYLEN 文 ............................................................................................................................................. 7-18

    オプション・キーワード EXECUTE ......................................................................................................... 7-19

    埋込み埋込み埋込み埋込み PL/SQL のカーソルの使用方法のカーソルの使用方法のカーソルの使用方法のカーソルの使用方法 ............................................................................................................ 7-21ストアドストアドストアドストアド PL/SQL およびおよびおよびおよび Java サブプログラムサブプログラムサブプログラムサブプログラム ............................................................................................... 7-21

    ストアド・サブプログラムの生成 ............................................................................................................. 7-22

    ストアド PL/SQL または Java サブプログラムのコール ...................................................................... 7-24

    ストアド・サブプログラムに関する情報を得る方法 ............................................................................. 7-30

    外部プロシージャ外部プロシージャ外部プロシージャ外部プロシージャ ................................................................................................................................................. 7-30外部プロシージャの制限 ............................................................................................................................. 7-31

    外部プロシージャの作成 ............................................................................................................................. 7-32

    viii

  • SQLExtProcError() ....................................................................................................................................... 7-33

    動的動的動的動的 SQL の使用の使用の使用の使用 ................................................................................................................................................... 7-34

    8 ホスト配列ホスト配列ホスト配列ホスト配列配列を使用する理由配列を使用する理由配列を使用する理由配列を使用する理由 ............................................................................................................................................... 8-2ホスト配列の宣言ホスト配列の宣言ホスト配列の宣言ホスト配列の宣言 ................................................................................................................................................... 8-2

    制限 ................................................................................................................................................................... 8-2

    配列の最大サイズ ........................................................................................................................................... 8-2

    SQL 文での配列の使用文での配列の使用文での配列の使用文での配列の使用 .......................................................................................................................................... 8-3ホスト配列の参照 ........................................................................................................................................... 8-3

    インジケータ配列の使用方法 ....................................................................................................................... 8-4

    Oracle 制限事項 .............................................................................................................................................. 8-4

    ANSI 制限事項および要件 ............................................................................................................................ 8-4

    配列への選択配列への選択配列への選択配列への選択 ........................................................................................................................................................... 8-5カーソルのフェッチ ....................................................................................................................................... 8-5

    sqlca.sqlerrd[2] の使用方法 ............................................................................................................................. 8-6

    FETCH される行数 ........................................................................................................................................ 8-7

    スクロール可能カーソルのフェッチ ........................................................................................................... 8-8

    サンプル・プログラム 3: ホスト配列 .......................................................................................................... 8-8

    サンプル・プログラム : スクロール可能カーソルを使用するホスト配列 .......................................... 8-11

    ホスト配列の制限 ......................................................................................................................................... 8-14

    NULL 値のフェッチ .................................................................................................................................... 8-14

    切り捨てられた値のフェッチ ..................................................................................................................... 8-14

    配列での挿入配列での挿入配列での挿入配列での挿入 ......................................................................................................................................................... 8-15配列での挿入の制限 ..................................................................................................................................... 8-15

    配列での更新配列での更新配列での更新配列での更新 ......................................................................................................................................................... 8-16配列での更新の制限 ..................................................................................................................................... 8-16

    配列での削除配列での削除配列での削除配列での削除 ......................................................................................................................................................... 8-17配列での削除の制限 ..................................................................................................................................... 8-18

    FOR 句の使用方法句の使用方法句の使用方法句の使用方法 ............................................................................................................................................... 8-18FOR 句の制限 ................................................................................................................................................ 8-19

    WHERE 句の使用方法句の使用方法句の使用方法句の使用方法 ......................................................................................................................................... 8-20構造体配列構造体配列構造体配列構造体配列 ............................................................................................................................................................. 8-21

    構造体の配列の使用方法 ............................................................................................................................. 8-21

    構造体の配列の制限 ..................................................................................................................................... 8-22

    ix

  • 構造体の配列の宣言 ..................................................................................................................................... 8-22

    変数のガイドライン ..................................................................................................................................... 8-24

    構造体配列へのポインタの宣言 ................................................................................................................. 8-25

    例 ..................................................................................................................................................................... 8-25

    CURRENT OF の疑似実行の疑似実行の疑似実行の疑似実行 ................................................................................................................................. 8-31

    9 ランタイム・エラーの処理ランタイム・エラーの処理ランタイム・エラーの処理ランタイム・エラーの処理エラー処理の必要性エラー処理の必要性エラー処理の必要性エラー処理の必要性 ............................................................................................................................................... 9-2エラー処理の代替手段エラー処理の代替手段エラー処理の代替手段エラー処理の代替手段 ........................................................................................................................................... 9-2

    状態変数 ........................................................................................................................................................... 9-2

    SQL コミュニケーション領域 ...................................................................................................................... 9-3

    SQLSTATE 状態変数状態変数状態変数状態変数 ............................................................................................................................................. 9-4 SQLSTATE の宣言 ......................................................................................................................................... 9-4

    SQLSTATE の値 ............................................................................................................................................. 9-5

    SQLSTATE の使用 ........................................................................................................................................ 9-14

    SQLCODE の宣言の宣言の宣言の宣言 ................................................................................................................................................ 9-15SQLCA を使用したエラー・レポートの主要コンポーネントを使用したエラー・レポートの主要コンポーネントを使用したエラー・レポートの主要コンポーネントを使用したエラー・レポートの主要コンポーネント ..................................................................... 9-16

    ステータス・コード ..................................................................................................................................... 9-16

    警告フラグ ..................................................................................................................................................... 9-16

    処理済み行数 ................................................................................................................................................. 9-16

    解析エラー・オフセット ............................................................................................................................. 9-17

    エラー・メッセージ・テキスト ................................................................................................................. 9-17

    SQL コミュニケーション領域(コミュニケーション領域(コミュニケーション領域(コミュニケーション領域(SQLCA)の使用)の使用)の使用)の使用 ......................................................................................... 9-18SQLCA の宣言 .............................................................................................................................................. 9-18

    SQLCA の内容 .............................................................................................................................................. 9-19

    SQLCA の構造体 .......................................................................................................................................... 9-21

    PL/SQL の考慮事項 ..................................................................................................................................... 9-25

    エラー・メッセージの全文の取得エラー・メッセージの全文の取得エラー・メッセージの全文の取得エラー・メッセージの全文の取得 ..................................................................................................................... 9-26WHENEVER ディレクティブの使用ディレクティブの使用ディレクティブの使用ディレクティブの使用 ................................................................................................................ 9-27

    WHENEVER の条件 .................................................................................................................................... 9-27

    WHENEVER のアクション ........................................................................................................................ 9-28

    WHENEVER の例 ........................................................................................................................................ 9-29

    DO BREAK と DO CONTINUE の利用 .................................................................................................... 9-30

    WHENEVER 文の適用範囲 ........................................................................................................................ 9-31

    WHENEVER のガイドライン .................................................................................................................... 9-32

    x

  • SQL 文のテキスト取得文のテキスト取得文のテキスト取得文のテキスト取得 ........................................................................................................................................ 9-35制限 ................................................................................................................................................................. 9-37

    サンプル・プログラム ................................................................................................................................. 9-37

    Oracle 通信領域(通信領域(通信領域(通信領域(ORACA)の使用)の使用)の使用)の使用 ................................................................................................................ 9-38ORACA の宣言 ............................................................................................................................................. 9-38

    ORACA を使用可能にする ......................................................................................................................... 9-38

    ORACA の内容 ............................................................................................................................................. 9-39

    ランタイム・オプションの選択 ................................................................................................................. 9-41

    ORACA の構造体 ......................................................................................................................................... 9-41

    ORACA の使用例 ......................................................................................................................................... 9-45

    10 プリコンパイラのオプションプリコンパイラのオプションプリコンパイラのオプションプリコンパイラのオプションプリコンパイラのコマンドプリコンパイラのコマンドプリコンパイラのコマンドプリコンパイラのコマンド ................................................................................................................................. 10-2

    大 / 小文字区別 ............................................................................................................................................ 10-3

    プリコンパイラのオプションプリコンパイラのオプションプリコンパイラのオプションプリコンパイラのオプション ............................................................................................................................. 10-3構成ファイル ................................................................................................................................................. 10-4

    オプション値の優先順位 ............................................................................................................................. 10-4

    マクロ・オプションおよびマイクロ・オプション ................................................................................. 10-6

    プリコンパイル中の状況 ............................................................................................................................. 10-6

    オプションの適用範囲 ................................................................................................................................. 10-7

    クイック・リファレンスクイック・リファレンスクイック・リファレンスクイック・リファレンス ..................................................................................................................................... 10-7オプションの入力オプションの入力オプションの入力オプションの入力 ............................................................................................................................................... 10-10

    コマンドライン ........................................................................................................................................... 10-10

    インライン ................................................................................................................................................... 10-10

    プリコンパイラ・オプションの使用プリコンパイラ・オプションの使用プリコンパイラ・オプションの使用プリコンパイラ・オプションの使用 ............................................................................................................... 10-12AUTO_CONNECT ..................................................................................................................................... 10-12CHAR_MAP ................................................................................................................................................ 10-13CLOSE_ON_COMMIT .............................................................................................................................. 10-14CODE ........................................................................................................................................................... 10-15COMP_CHARSET ...................................................................................................................................... 10-16CONFIG ....................................................................................................................................................... 10-17CPP_SUFFIX ............................................................................................................................................... 10-17DBMS ........................................................................................................................................................... 10-18DEF_SQLCODE .......................................................................................................................................... 10-19DEFINE ........................................................................................................................................................ 10-20DURATION ................................................................................................................................................. 10-21

    xi

  • DYNAMIC ................................................................................................................................................... 10-22ERRORS ....................................................................................................................................................... 10-22ERRTYPE ..................................................................................................................................................... 10-23FIPS ............................................................................................................................................................... 10-23HEADER ...................................................................................................................................................... 10-25HOLD_CURSOR ........................................................................................................................................ 10-26INAME ......................................................................................................................................................... 10-27INCLUDE .................................................................................................................................................... 10-27INTYPE ........................................................................................................................................................ 10-29LINES ........................................................................................................................................................... 10-29LNAME ........................................................................................................................................................ 10-30LTYPE .......................................................................................................................................................... 10-31MAXLITERAL ............................................................................................................................................ 10-31MAXOPENCURSORS ............................................................................................................................... 10-32MODE .......................................................................................................................................................... 10-33NLS_CHAR ................................................................................................................................................. 10-34NLS_LOCAL ............................................................................................................................................... 10-35OBJECTS ...................................................................................................................................................... 10-35ONAME ....................................................................................................................................................... 10-36ORACA ........................................................................................................................................................ 10-37PAGELEN .................................................................................................................................................... 10-37PARSE .......................................................................................................................................................... 10-38PREFETCH .................................................................................................................................................. 10-39RELEASE_CURSOR ................................................................................................................................... 10-39SELECT_ERROR ........................................................................................................................................ 10-40SQLCHECK ................................................................................................................................................. 10-41SYS_INCLUDE ........................................................................................................................................... 10-42THREADS .................................................................................................................................................... 10-43TYPE_CODE ............................................................................................................................................... 10-43UNSAFE_NULL ......................................................................................................................................... 10-44USERID ........................................................................................................................................................ 10-44UTF16_CHARSET ...................................................................................................................................... 10-45VARCHAR .................................................................................................................................................. 10-46VERSION ..................................................................................................................................................... 10-46

    xii

  • 11 マルチスレッド・アプリケーションマルチスレッド・アプリケーションマルチスレッド・アプリケーションマルチスレッド・アプリケーションスレッドスレッドスレッドスレッド ................................................................................................................................................................. 11-2Pro*C/C++ のランタイム・コンテキストのランタイム・コンテキストのランタイム・コンテキストのランタイム・コンテキスト ........................................................................................................ 11-3ランタイム・コンテキストの使用モデルランタイム・コンテキストの使用モデルランタイム・コンテキストの使用モデルランタイム・コンテキストの使用モデル ......................................................................................................... 11-5

    単一のランタイム・コンテキストを共有する複数のスレッド ............................................................. 11-5

    複数のランタイム・コンテキストを共有する複数のスレッド ............................................................. 11-7

    マルチスレッド・アプリケーションのユーザー・インタフェースマルチスレッド・アプリケーションのユーザー・インタフェースマルチスレッド・アプリケーションのユーザー・インタフェースマルチスレッド・アプリケーションのユーザー・インタフェース ............................................................. 11-8THREADS オプション ................................................................................................................................. 11-8

    埋込み SQL 文とディレクティブ ............................................................................................................... 11-8

    CONTEXT USE の例 .................................................................................................................................. 11-11

    プログラミングの考慮事項 ....................................................................................................................... 11-12

    マルチスレッドの例マルチスレッドの例マルチスレッドの例マルチスレッドの例 ........................................................................................................................................... 11-13接続プーリング接続プーリング接続プーリング接続プーリング ................................................................................................................................................... 11-20

    接続プーリング機能の使用方法 ............................................................................................................... 11-22

    デモ・プログラム : 1 .................................................................................................................................. 11-24

    デモ・プログラム : 2 .................................................................................................................................. 11-31

    12 C++ アプリケーションアプリケーションアプリケーションアプリケーションC++ サポートの理解サポートの理解サポートの理解サポートの理解 ............................................................................................................................................ 12-2

    特殊なマクロ処理は不要 ............................................................................................................................. 12-2

    C++ のプリコンパイルのプリコンパイルのプリコンパイルのプリコンパイル ........................................................................................................................................ 12-3コードの生成 ................................................................................................................................................. 12-3

    コードの解析 ................................................................................................................................................. 12-4

    出力ファイル名の拡張子 ............................................................................................................................. 12-5

    システム・ヘッダー・ファイル ................................................................................................................. 12-5

    サンプル・プログラムサンプル・プログラムサンプル・プログラムサンプル・プログラム ......................................................................................................................................... 12-6cppdemo1.pc ................................................................................................................................................. 12-6cppdemo2.pc ............................................................................................................................................... 12-10cppdemo3.pc ............................................................................................................................................... 12-14

    13 Oracle 動的動的動的動的 SQL動的動的動的動的 SQL ................................................................................................................................................................ 13-2動的動的動的動的 SQL の長所と短所の長所と短所の長所と短所の長所と短所 ....................................................................................................................................... 13-2動的動的動的動的 SQL の使用の使用の使用の使用 ................................................................................................................................................... 13-3動的動的動的動的 SQL 文の要件文の要件文の要件文の要件 ............................................................................................................................................... 13-3

    xiii

  • 動的動的動的動的 SQL 文の処理方法文の処理方法文の処理方法文の処理方法 ....................................................................................................................................... 13-4動的動的動的動的 SQL の使用方法の使用方法の使用方法の使用方法 ........................................................................................................................................... 13-4

    方法 1 .............................................................................................................................................................. 13-5

    方法 2 .............................................................................................................................................................. 13-5

    方法 3 .............................................................................................................................................................. 13-5

    方法 4 .............................................................................................................................................................. 13-6

    ガイドライン ................................................................................................................................................. 13-6

    方法方法方法方法 1 の使用方法の使用方法の使用方法の使用方法 ................................................................................................................................................. 13-8サンプル・プログラム : 動的 SQL 方法 1 ................................................................................................. 13-9

    方法方法方法方法 2 の使用方法の使用方法の使用方法の使用方法 ............................................................................................................................................... 13-12USING 句 ..................................................................................................................................................... 13-13

    サンプル・プログラム : 動的 SQL 方法 2 ............................................................................................... 13-14

    方法方法方法方法 3 の使用方法の使用方法の使用方法の使用方法 ............................................................................................................................................... 13-18PREPARE ..................................................................................................................................................... 13-19DECLARE .................................................................................................................................................... 13-19OPEN ........................................................................................................................................................... 13-20FETCH .......................................................................................................................................................... 13-20CLOSE .......................................................................................................................................................... 13-20

    サンプル・プログラム : 動的 SQL 方法 3 ............................................................................................... 13-21

    方法方法方法方法 4 の使用方法の使用方法の使用方法の使用方法 ............................................................................................................................................... 13-25 SQLDA の必要性 ....................................................................................................................................... 13-25

    DESCRIBE 文 .............................................................................................................................................. 13-26SQLDA .........................