目次
- 表一覧
- タイトルおよび著作権情報
- はじめに
- 『Pro*C/C++プログラマーズ・ガイド』のこのリリースでの変更点
-
第I部 概要および概念
-
1 概要
- 1.1 Oracleプリコンパイラ
- 1.2 Oracle Pro*C/C++プリコンパイラを使用する理由
- 1.3 SQLを使用する理由
- 1.4 PL/SQLを使用する理由
- 1.5 Pro*C/C++プリコンパイラの利点
- 1.6 ディレクトリ構造
- 1.7 ライブラリ・ファイル
-
1.8 よくある質問(FAQ)
- 1.8.1 VARCHARについて説明してください。
- 1.8.2 Pro*C/C++はOracle Call Interfaceのコールを生成しますか。
- 1.8.3 Pro*C/C++を使用せず、SQLLIBコールを使用してコーディングできますか。
- 1.8.4 PL/SQLのストアド・プロシージャをPro*C/C++プログラムからコールできますか。
- 1.8.5 C++のコードを作成し、Pro*C/C++を使用してプリコンパイルできますか。
- 1.8.6 SQL文の任意の場所でバインド変数を使用できますか。
- 1.8.7 Pro*C/C++の文字処理がよくわかりません。
- 1.8.8 文字ポインタについて何か特別なことはありますか。
- 1.8.9 Pro*C/C++でSPOOLが動作しない理由を説明してください。
- 1.8.10 サンプル・プログラムのオンライン版はどこにありますか。
- 1.8.11 アプリケーションをコンパイルしてリンクする方法を教えてください。
- 1.8.12 Pro*C/C++では構造体をホスト変数として使用できますか。
- 1.8.13 再帰関数内で埋込みSQLを使用した場合、その再帰関数をPro*C/C++で使用できますか。
- 1.8.14 Pro*C/C++のすべてのリリースを、Oracleサーバーのすべてのバージョンで使用できますか。
- 1.8.15 アプリケーションを実行すると、必ずORA-01405エラー(フェッチした列の値がNULLです)が発生します。
- 1.8.16 すべてのSQLLIB関数はプライベート関数ですか。
- 1.8.17 新しいオブジェクト型はOracleでどのようにサポートされていますか。
- 1.8.18 互換性、アップグレードおよび移行
- 2 プリコンパイラの概要
- 3 データベースの概要
-
4 データ型とホスト変数
-
4.1 Oracleのデータ型
- 4.1.1 内部データ型
-
4.1.2 外部データ型
- 4.1.2.1 VARCHAR2
- 4.1.2.2 NUMBER
- 4.1.2.3 INTEGER
- 4.1.2.4 FLOAT
- 4.1.2.5 STRING
- 4.1.2.6 VARNUM
- 4.1.2.7 LONG
- 4.1.2.8 VARCHAR
- 4.1.2.9 ROWID
- 4.1.2.10 DATE
- 4.1.2.11 RAW
- 4.1.2.12 VARRAW
- 4.1.2.13 LONG RAW
- 4.1.2.14 UNSIGNED
- 4.1.2.15 LONG VARCHAR
- 4.1.2.16 LONG VARRAW
- 4.1.2.17 CHAR
- 4.1.2.18 CHARZ
- 4.1.2.19 CHARF
- 4.1.3 その他の外部データ型
- 4.2 ホスト変数
- 4.3 標識変数
- 4.4 VARCHAR変数
- 4.5 カーソル変数
- 4.6 CONTEXT変数
- 4.7 ユニバーサルROWID
- 4.8 ホスト構造体
- 4.9 ポインタ変数
- 4.10 グローバリゼーション・サポート
- 4.11 NCHAR変数
-
4.1 Oracleのデータ型
-
5 高度なトピック
- 5.1 文字データ
- 5.2 データ型変換
- 5.3 データ型の同値化
- 5.4 Cプリプロセッサ
- 5.5 プリコンパイル済ヘッダー・ファイル
- 5.6 Oracleプリプロセッサ
- 5.7 数値定数の評価
- 5.8 OCIリリース8のSQLLIB拡張相互運用性
- 5.9 OCIリリース8へのインタフェース
- 5.10 OCIリリース7コールの埋込み
- 5.11 SQLLIBパブリック関数の新しい名前
- 5.12 X/Openアプリケーションの開発
- 6 埋込みSQL
- 7 埋込みPL/SQL
-
8 ホスト配列
- 8.1 配列を使用する理由
- 8.2 ホスト配列の宣言について
- 8.3 SQL文での配列の使用方法について
- 8.4 配列への選択について
- 8.5 配列での挿入について
- 8.6 配列での更新について
- 8.7 配列での削除について
- 8.8 FOR句の使用方法について
- 8.9 WHERE句の使用方法について
- 8.10 構造体配列
- 8.11 CURRENT OFの疑似実行について
- 8.12 追加の配列の挿入/選択構文の使用について
- 8.13 暗黙的なバッファ済INSERTの使用について
- 8.14 スクロール可能カーソル
-
9 ランタイム・エラーの処理
- 9.1 エラー処理の必要性
- 9.2 エラー処理の代替手段
- 9.3 SQLSTATE状態変数
- 9.4 SQLCODEの宣言について
- 9.5 SQLCAを使用したエラー・レポートの主要コンポーネント
- 9.6 SQL通信領域(SQLCA)の使用
- 9.7 エラー・メッセージの全文の取得について
- 9.8 WHENEVERディレクティブの使用について
- 9.9 SQL文のテキスト取得について
- 9.10 Oracle通信領域(ORACA)の使用について
-
10 プリコンパイラのオプション
- 10.1 プリコンパイラのコマンド
- 10.2 プリコンパイラのオプション
- 10.3 クイック・リファレンス
- 10.4 オプションの入力
-
10.5 プリコンパイラ・オプションの使用方法について
- 10.5.1 AUTO_CONNECT
- 10.5.2 CHAR_MAP
- 10.5.3 CINCR
- 10.5.4 CLOSE_ON_COMMIT
- 10.5.5 CMAX
- 10.5.6 CMIN
- 10.5.7 CNOWAIT
- 10.5.8 CODE
- 10.5.9 COMMON_PARSER
- 10.5.10 COMP_CHARSET
- 10.5.11 CONFIG
- 10.5.12 CPOOL
- 10.5.13 CPP_SUFFIX
- 10.5.14 CTIMEOUT
- 10.5.15 DB2_ARRAY
- 10.5.16 DBMS
- 10.5.17 DEF_SQLCODE
- 10.5.18 DEFINE
- 10.5.19 DURATION
- 10.5.20 DYNAMIC
- 10.5.21 ERRORS
- 10.5.22 ERRTYPE
- 10.5.23 EVENTS
- 10.5.24 FIPS
- 10.5.25 HEADER
- 10.5.26 HOLD_CURSOR
- 10.5.27 IMPLICIT_SVPT
- 10.5.28 INAME
- 10.5.29 INCLUDE
- 10.5.30 INTYPE
- 10.5.31 LINES
- 10.5.32 LNAME
- 10.5.33 LTYPE
- 10.5.34 MAX_ROW_INSERT
- 10.5.35 MAXLITERAL
- 10.5.36 MAXOPENCURSORS
- 10.5.37 MODE
- 10.5.38 NATIVE_TYPES
- 10.5.39 NLS_CHAR
- 10.5.40 NLS_LOCAL
- 10.5.41 OBJECTS
- 10.5.42 ONAME
- 10.5.43 ORACA
- 10.5.44 OUTLINE
- 10.5.45 OUTLNPREFIX
- 10.5.46 PAGELEN
- 10.5.47 PARSE
- 10.5.48 PLAN_BASELINE
- 10.5.49 PLAN_PREFIX
- 10.5.50 PLAN_RUN
- 10.5.51 PLAN_FIXED
- 10.5.52 PLAN_ENABLED
- 10.5.53 MEMFORPREFETCH
- 10.5.54 PREFETCH
- 10.5.55 RELEASE_CURSOR
- 10.5.56 RUNOUTLINE
- 10.5.57 SELECT_ERROR
- 10.5.58 STMT_CACHE
- 10.5.59 SYS_INCLUDE
- 10.5.60 THREADS
- 10.5.61 TYPE_CODE
- 10.5.62 UNSAFE_NULL
- 10.5.63 USERID
- 10.5.64 UTF16_CHARSET
- 10.5.65 VARCHAR
- 10.5.66 VERSION
- 11 マルチスレッド・アプリケーション
-
1 概要
-
第II部 アプリケーション
- 12 C++アプリケーション
- 13 Oracle動的SQL
-
14 ANSI動的SQL
- 14.1 ANSI動的SQLの基本
- 14.2 ANSI SQL文の概要
- 14.3 Oracle拡張機能
- 14.4 ANSI動的SQLプリコンパイラ・オプション
-
14.5 動的SQL文の完全な構文
- 14.5.1 ALLOCATE DESCRIPTOR
- 14.5.2 DEALLOCATE DESCRIPTOR
- 14.5.3 GET DESCRIPTOR
- 14.5.4 SET DESCRIPTOR
- 14.5.5 PREPAREの使用
- 14.5.6 DESCRIBE INPUT
- 14.5.7 DESCRIBE OUTPUT
- 14.5.8 EXECUTE
- 14.5.9 EXECUTE IMMEDIATEの使用
- 14.5.10 DYNAMIC DECLARE CURSORの使用
- 14.5.11 カーソルのOPEN
- 14.5.12 FETCH
- 14.5.13 動的カーソルのCLOSE
- 14.5.14 旧バージョンのOracle動的方法4との相違点
- 14.5.15 制限事項(ANSI動的SQL)
- 14.6 サンプル・プログラム
-
15 Oracle動的SQL: 方法4
- 15.1 方法4の特殊要件
- 15.2 SQLDAの説明
- 15.3 SQLDA変数の使用について
- 15.4 予備知識
- 15.5 基本ステップ
-
15.6 各ステップの詳細
- 15.6.1 ホスト文字列の宣言
- 15.6.2 SQLDAの宣言
- 15.6.3 記述子用の記憶域の割当て
- 15.6.4 DESCRIBEへの最大数の設定
- 15.6.5 ホスト文字列への問合せテキストの設定
- 15.6.6 ホスト文字列からの問合せのPREPARE
- 15.6.7 カーソルのDECLARE
- 15.6.8 バインド変数のDESCRIBE
- 15.6.9 プレースホルダの最大数の再設定
- 15.6.10 バインド変数の値の取得と記憶域の割当て
- 15.6.11 カーソルのOPEN
- 15.6.12 選択リストのDESCRIBE
- 15.6.13 選択リスト項目の最大数の再設定
- 15.6.14 各選択リスト項目の長さとデータ型の再設定
- 15.6.15 アクティブ・セットからの行のFETCH
- 15.6.16 選択リストの値の取得と処理
- 15.6.17 記憶域の割当て解除
- 15.6.18 カーソルのCLOSE
- 15.6.19 ホスト配列の使用について
- 15.6.20 sample12.pc
- 15.7 サンプル・プログラム: 動的SQL方法4
- 15.8 サンプル・プログラム: スクロール可能カーソルを使用する動的SQL方法4
-
16 LOB
- 16.1 LOB
- 16.2 プログラムでのLOBの使用方法
- 16.3 LOB文のルール
-
16.4 LOB文
- 16.4.1 APPEND
- 16.4.2 ASSIGN
- 16.4.3 CLOSE (LOBの場合)
- 16.4.4 COPY
- 16.4.5 CREATE TEMPORARY
- 16.4.6 DISABLE BUFFERING
- 16.4.7 ENABLE BUFFERING
- 16.4.8 ERASE
- 16.4.9 FILE CLOSE ALL
- 16.4.10 FILE SET
- 16.4.11 FLUSH BUFFER
- 16.4.12 FREE TEMPORARY
- 16.4.13 LOAD FROM FILE
- 16.4.14 OPEN (LOBの場合)
- 16.4.15 READ
- 16.4.16 TRIM
- 16.4.17 WRITE
- 16.4.18 DESCRIBE
- 16.5 LOBおよびナビゲーショナル・アクセス用インタフェース
- 16.6 LOBプログラムの例
-
17 オブジェクト
- 17.1 オブジェクトの概要
- 17.2 Pro*C/C++でのオブジェクト型の使用について
- 17.3 オブジェクト・キャッシュ
- 17.4 連想アクセス用インタフェース
- 17.5 ナビゲーショナル・アクセス用インタフェース
- 17.6 オブジェクト属性とC言語のデータ型の変換
- 17.7 オブジェクト・オプションの設定/取得
- 17.8 オブジェクトに対する新しいプリコンパイラ・オプション
- 17.9 Pro*C/C++のオブジェクト例
- 17.10 型の継承のサンプル・コード
- 17.11 ナビゲーショナル・アクセスのサンプル・コード
- 17.12 C言語の構造体の使用について
- 17.13 REFの使用について
- 17.14 OCIDate、OCIString、OCINumberおよびOCIRawの使用について
- 17.15 Pro*C/C++の新しいデータベース型の概要
- 17.16 動的SQLでのOracleデータ型使用の制限
- 18 コレクション
-
19 Object Type Translator
- 19.1 OTT概要
- 19.2 Object Type Translator(OTT)
- 19.3 OCIアプリケーションでのOTTの使用方法
- 19.4 Pro*C/C++アプリケーションでのOTTの使用について
- 19.5 OTT参照
-
20 ユーザー・イグジット
- 20.1 ユーザー・イグジット
- 20.2 ユーザー・イグジットを作成する理由
- 20.3 ユーザー・イグジットの開発について
- 20.4 ユーザー・イグジットの作成について
- 20.5 EXEC TOOLS文
- 20.6 ユーザー・イグジットのコールについて
- 20.7 ユーザー・イグジットへのパラメータの引渡しについて
- 20.8 フォームへの値の返却について
- 20.9 ユーザー・イグジットの使用例
- 20.10 ユーザー・イグジットのプリコンパイルおよびコンパイルについて
- 20.11 サンプル・プログラム: ユーザー・イグジット
- 20.12 GENXTBユーティリティの使用について
- 20.13 SQL*Formsへのユーザー・イグジットのリンクについて
- 20.14 ガイドライン
-
付録
- A 予約語、キーワードおよびネームスペース
- B パフォーマンス・チューニング
- C 構文およびセマンティックのチェック
- D システム固有の参照
-
E 埋込みSQL文およびディレクティブ
- E.1 プリコンパイラ・ディレクティブと埋込みSQL文の概要
- E.2 文の説明
- E.3 構文図の読み方
- E.4 ALLOCATE (実行可能埋込みSQL拡張機能)
- E.5 ALLOCATE DESCRIPTOR (実行可能埋込みSQL)
- E.6 CACHE FREE ALL (実行可能埋込みSQL拡張機能)
- E.7 CALL (実行可能埋込みSQL)
- E.8 CLOSE (実行可能埋込みSQL)
- E.9 COLLECTION APPEND (実行可能埋込みSQL拡張機能)
- E.10 COLLECTION DESCRIBE (実行可能埋込みSQL拡張機能)
- E.11 COLLECTION GET (実行可能埋込みSQL拡張機能)
- E.12 COLLECTION RESET (実行可能埋込みSQL拡張機能)
- E.13 COLLECTION SET (実行可能埋込みSQL拡張機能)
- E.14 COLLECTION TRIM (実行可能埋込みSQL拡張機能)
- E.15 COMMIT (実行可能埋込みSQL)
- E.16 CONNECT (実行可能埋込みSQL拡張機能)
- E.17 CONTEXT ALLOCATE (実行可能埋込みSQL拡張機能)
- E.18 CONTEXT FREE (実行可能埋込みSQL拡張機能)
- E.19 CONTEXT OBJECT OPTION GET (実行可能埋込みSQL拡張機能)
- E.20 CONTEXT OBJECT OPTION SET (実行可能埋込みSQL拡張機能)
- E.21 CONTEXT USE (Oracle埋込みSQLディレクティブ)
- E.22 DEALLOCATE DESCRIPTOR (埋込みSQL文)
- E.23 DECLARE CURSOR (埋込みSQLディレクティブ)
- E.24 DECLARE DATABASE (Oracle埋込みSQLディレクティブ)
- E.25 DECLARE STATEMENT (埋込みSQLディレクティブ)
- E.26 DECLARE TABLE (Oracle埋込みSQLディレクティブ)
- E.27 DECLARE TYPE (Oracle埋込みSQLディレクティブ)
- E.28 DELETE (実行可能埋込みSQL)
- E.29 DESCRIBE (実行可能埋込みSQL拡張機能)
- E.30 DESCRIBE DESCRIPTOR (実行可能埋込みSQL)
- E.31 ENABLE THREADS (実行可能埋込みSQL拡張機能)
- E.32 EXECUTE ... END-EXEC (実行可能埋込みSQL拡張機能)
- E.33 EXECUTE (実行可能埋込みSQL)
- E.34 EXECUTE DESCRIPTOR (実行可能埋込みSQL)
- E.35 EXECUTE IMMEDIATE (実行可能埋込みSQL)
- E.36 FETCH (実行可能埋込みSQL)
- E.37 FETCH DESCRIPTOR (実行可能埋込みSQL)
- E.38 FREE (実行可能埋込みSQL拡張機能)
- E.39 GET DESCRIPTOR (実行可能埋込みSQL)
- E.40 INSERT (実行可能埋込みSQL)
- E.41 LOB APPEND (実行可能埋込みSQL拡張機能)
- E.42 LOB ASSIGN (実行可能埋込みSQL拡張機能)
- E.43 LOB CLOSE (実行可能埋込みSQL拡張機能)
- E.44 LOB COPY (実行可能埋込みSQL拡張機能)
- E.45 LOB CREATE TEMPORARY (実行可能埋込みSQL拡張機能)
- E.46 LOB DESCRIBE (実行可能埋込みSQL拡張機能)
- E.47 LOB DISABLE BUFFERING (実行可能埋込みSQL拡張機能)
- E.48 LOB ENABLE BUFFERING (実行可能埋込みSQL拡張機能)
- E.49 LOB ERASE (実行可能埋込みSQL拡張機能)
- E.50 LOB FILE CLOSE ALL (実行可能埋込みSQL拡張機能)
- E.51 LOB FILE SET (実行可能埋込みSQL拡張機能)
- E.52 LOB FLUSH BUFFER (実行可能埋込みSQL拡張機能)
- E.53 LOB FREE TEMPORARY (実行可能埋込みSQL拡張機能)
- E.54 LOB LOAD (実行可能埋込みSQL拡張機能)
- E.55 LOB OPEN (実行可能埋込みSQL拡張機能)
- E.56 LOB READ (実行可能埋込みSQL拡張機能)
- E.57 LOB TRIM (実行可能埋込みSQL拡張機能)
- E.58 LOB WRITE (実行可能埋込みSQL拡張機能)
- E.59 OBJECT CREATE (実行可能埋込みSQL拡張機能)
- E.60 OBJECT DELETE (実行可能埋込みSQL拡張機能)
- E.61 OBJECT DEREF (実行可能埋込みSQL拡張機能)
- E.62 OBJECT FLUSH (実行可能埋込みSQL拡張機能)
- E.63 OBJECT GET (実行可能埋込みSQL拡張機能)
- E.64 OBJECT RELEASE (実行可能埋込みSQL拡張機能)
- E.65 OBJECT SET (実行可能埋込みSQL拡張機能)
- E.66 OBJECT UPDATE (実行可能埋込みSQL拡張機能)
- E.67 OPEN (実行可能埋込みSQL)
- E.68 OPEN DESCRIPTOR (実行可能埋込みSQL)
- E.69 PREPARE (実行可能埋込みSQL)
- E.70 REGISTER CONNECT (実行可能埋込みSQL拡張機能)
- E.71 ROLLBACK (実行可能埋込みSQL)
- E.72 SAVEPOINT (実行可能埋込みSQL)
- E.73 SELECT (実行可能埋込みSQL)
- E.74 SET DESCRIPTOR (実行可能埋込みSQL)
- E.75 TYPE (Oracle埋込みSQLディレクティブ)
- E.76 UPDATE (実行可能埋込みSQL)
- E.77 VAR (Oracle埋込みSQLディレクティブ)
- E.78 WHENEVER (埋込みSQLディレクティブ)
- F サンプル・プログラム
- G Microsoft Visual Studio .NETへのPro*C/C++の統合
- 索引