プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12
c
リリース1(12.1)
B71397-03
索引
次
目次
表一覧
タイトルおよび著作権情報
はじめに
対象読者
ドキュメントのアクセシビリティについて
関連ドキュメント
表記規則
『Pro*C/C++プログラマーズ・ガイド』のこのリリースでの変更点
Pro*C/C++ 12
c
リリース1 (12.1)での変更点
新機能
第I部 概要および概念
1
概要
Oracleプリコンパイラ
Oracle Pro*C/C++プリコンパイラを使用する理由
SQLを使用する理由
PL/SQLを使用する理由
Pro*C/C++プリコンパイラの利点
ディレクトリ構造
既知の問題、制限および回避策
ライブラリ・ファイル
よくある質問(FAQ)
VARCHARについて説明してください。
Pro*C/C++はOracle Call Interfaceのコールを生成しますか。
Pro*C/C++を使用せず、SQLLIBコールを使用してコーディングできますか。
PL/SQLのストアド・プロシージャをPro*C/C++プログラムからコールできますか。
C++のコードを作成し、Pro*C/C++を使用してプリコンパイルできますか。
SQL文の任意の場所でバインド変数を使用できますか。
Pro*C/C++の文字処理がよくわかりません。
文字ポインタについて何か特別なことはありますか。
Pro*C/C++でSPOOLが動作しない理由を説明してください。
サンプル・プログラムのオンライン版はどこにありますか。
アプリケーションをコンパイルしてリンクする方法を教えてください。
Pro*C/C++では構造体をホスト変数として使用できますか。
再帰関数内で埋込みSQLを使用した場合、その再帰関数をPro*C/C++で使用できますか。
Pro*C/C++のすべてのリリースを、Oracleサーバーのすべてのバージョンで使用できますか。
アプリケーションを実行すると、必ずORA-01405エラー(フェッチした列の値がNULLです)が発生します。
すべてのSQLLIB関数はプライベート関数ですか。
新しいオブジェクト型はOracleでどのようにサポートされていますか。
互換性、アップグレードおよび移行
2
プリコンパイラの概要
埋込みSQLプログラムの主な概要
埋込みSQL文
実行文とディレクティブ
埋込みSQLの構文
静的SQL文と動的SQL文の対比
埋込みPL/SQLブロック
ホスト変数および標識変数
Oracleのデータ型
配列
データ型の同値化
プライベートSQL領域、カーソルおよびアクティブ・セット
トランザクション
エラーおよび警告
SQL99構文サポート
埋込みSQLアプリケーションの開発ステップ
プログラミングのガイドライン
コメント
定数
宣言部
デリミタ
ファイルの長さ
関数プロトタイプ
ANSI_C
KR_C
CPP
ヒントの長さ
ホスト変数名
行の継続
行の長さ
MAXLITERALのデフォルト値
演算子
文の終了記号
条件付きプリコンパイル
記号の定義
SELECT文の例
分割プリコンパイル
ガイドライン
カーソルの参照
MAXOPENCURSORSの指定
単一のSQLCAの使用
コンパイルおよびリンク
サンプル表
サンプル・データ
サンプル・プログラム: 単純な問合せ
サンプル・プログラム: SQL99構文を使用する単純な問合せ
3
データベースの概要
データベースへの接続
ALTER AUTHORIZATION句を使用したパスワードの変更
標準CONNECT
CONNECT文でのパスワードの変更
Oracle Net Servicesを使用した接続
自動接続
AUTO_CONNECTプリコンパイラ・オプション
SYSDBAまたはSYSOPERシステム権限
高度な接続オプション
予備知識
同時ログイン
デフォルトのデータベースおよび接続
明示的接続
単一の明示的接続
SQL操作
PL/SQLブロック
カーソルの制御
動的SQL
複数の明示的接続
データの整合性の確認
暗黙的接続
単一の暗黙的接続
複数の暗黙的接続
トランザクション用語の定義
トランザクションがデータベースを保護する方法
トランザクションの開始および終了方法
COMMIT文の使用
DECLARE CURSOR文のWITH HOLD句
CLOSE_ON_COMMITプリコンパイラ・オプション
SAVEPOINT文の使用
ROLLBACK文
文レベル・ロールバック
RELEASEオプション
SET TRANSACTION文
デフォルト・ロックの上書き
FOR UPDATE OFの使用
制限事項
LOCK TABLEの使用
コミットにまたがるフェッチ
分散トランザクションの処理
ガイドライン
アプリケーションの設計
ロックの取得
PL/SQLの使用方法
4
データ型とホスト変数
Oracleのデータ型
内部データ型
外部データ型
VARCHAR2
入力時
出力時
NUMBER
INTEGER
FLOAT
STRING
入力時
出力時
VARNUM
LONG
VARCHAR
ROWID
DATE
RAW
VARRAW
LONG RAW
UNSIGNED
LONG VARCHAR
LONG VARRAW
CHAR
入力時
出力時
CHARZ
入力時
出力時
CHARF
その他の外部データ型
日時および時間隔のデータ型
ANSI DATE
TIMESTAMP
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
日時を使用した予期しない結果の回避
ホスト変数
ホスト変数の宣言
記憶域クラス指定子
型修飾子
ホスト変数の参照
制限事項
標識変数
INDICATORキーワード
標識変数の使用例
標識変数のガイドライン
Oracle制限事項
VARCHAR変数
VARCHAR変数の宣言
VARCHAR変数の参照
VARCHAR変数にNULLを戻す
VARCHAR変数を使用したNULLの挿入
関数へのVARCHAR変数の受渡し
VARCHAR配列コンポーネントの長さを調べる方法
サンプル・プログラム: sqlvcp()の使用
カーソル変数
カーソル変数の宣言
カーソル変数の割当て
カーソル変数のオープン
スタンドアロン・ストアド・プロシージャでのオープン
戻り型
カーソル変数のクローズと解放
OCIでのカーソル変数の使用(リリース7のみ)
制限事項(カーソル変数)
例: cv_demo.sqlおよびsample11.pc
cv_demo.sql
sample11.pc
コンテキスト変数
ユニバーサルROWID
SQLRowidGet()
ホスト構造体
ホスト構造体と配列
PL/SQLレコード
ネストした構造体と共用体
ホスト・インジケータ構造体
サンプル・プログラム: カーソルとホスト構造体
ポインタ変数
ポインタ変数の宣言
ポインタ変数の参照
構造体ポインタ
グローバリゼーション・サポート
NCHAR変数
CHARACTER SET [IS] NCHAR_CS
環境変数NLS_NCHAR
VAR文でのCONVBUFSZ句
埋込みSQL内の文字列
文字列の制限事項
標識変数
5
高度なトピック
文字データ
CHAR_MAPプリコンパイラ・オプション
CHAR_MAPオプションのインラインでの使用方法
DBMSオプションおよびCHAR_MAPオプションの影響
入力時
入力時
出力時
VARCHAR変数およびポインタ
入力時
出力時
Unicode変数
Unicode変数の使用に関する制限事項
データ型変換
データ型の同値化
ホスト変数の同値化
ユーザー定義型同値化
REFERENCE句
CHARF外部データ型
EXEC SQL VARおよびTYPEディレクティブ
例: データ型の同値化(sample4.pc)
Cプリプロセッサ
Pro*C/C++プリプロセッサの機能
プリプロセッサ・ディレクティブ
無視されるディレクティブ
ORA_PROCマクロ
ヘッダー・ファイルの格納場所の指定
プリプロセッサの例
#defineの使用について
他のプリプロセッサの制限
#includeに使用できないSQL文
SQLCA、ORACAおよびSQLDAの組込み
EXEC SQL INCLUDEおよび#includeのまとめ
定義済マクロ
インクルード・ファイル
プリコンパイル済ヘッダー・ファイル
プリコンパイル済ヘッダー・ファイルの作成
プリコンパイル済ヘッダー・ファイルの使用
例
冗長なファイル・インクルード
ケース1: 最上位のヘッダー・ファイルのインクルード
ケース2: ネストされたヘッダー・ファイルのインクルード
複数のプリコンパイル済ヘッダー・ファイル
ヘッダー・ファイルのリスト
オプションの効果
DEFINEおよびINCLUDEオプション
シングル・ユーザーの場合
マルチ・ユーザーの場合
CODEおよびPARSEオプション
使用上の注意
Oracleプリプロセッサ
記号の定義
Oracleプリプロセッサの例
数値定数の評価
Pro*C/C++での数値定数
数値定数の規則および例
OCIリリース8のSQLLIB拡張相互運用性
OCIリリース8環境でのランタイム・コンテキスト
OCIリリース8環境ハンドルのパラメータ
OCIリリース8へのインタフェース
SQLEnvGet()
SQLSvcCtxGet()
OCIリリース8コールの埋込み
OCIリリース7コールの埋込み
LDAの設定
リモートの複数接続
SQLLIBパブリック関数の新しい名前
X/Openアプリケーションの開発
Oracle固有の問題
Oracleへの接続
トランザクション制御
OCIコール(リリース7のみ)
リンク
6
埋込みSQL
ホスト変数
出力ホスト変数および入力ホスト変数
標識変数
NULL値の挿入
戻されたNULL値
NULL値のフェッチ
NULLのテスト
切り捨てられた値
基本的なSQL文
SELECT文
使用可能な句
INSERT文
副問合せの使用方法について
UPDATE文
DELETE文
WHERE句
DML RETURNING句
カーソル
DECLARE CURSOR文
OPEN文
FETCH文
CLOSE文
スクロール可能カーソル
スクロール可能なカーソルの使用について
DECLARE SCROLL CURSOR
スクロール可能カーソル用のOPEN
スクロール可能カーソル用のFETCH
スクロール可能カーソル用のCLOSE
CLOSE_ON_COMMITプリコンパイラ・オプション
PREFETCHプリコンパイラ・オプション
オプティマイザ・ヒント
ヒントの発行
実行計画の修正
SQLファイル
例
LOGファイル
CURRENT OF句
制限事項(FOR UPDATE OF)
カーソル文
スクロール不可カーソルを使用する完全な例
スクロール可能カーソルを使用する完全な例
位置付け更新
7
埋込みPL/SQL
PL/SQLの利点
パフォーマンスの向上
Oracleとの統合
カーソルFORループ
プロシージャおよびファンクション
パッケージ
PL/SQL表
ユーザー定義レコード
埋込みPL/SQLブロック
ホスト変数
例: PL/SQLでのホスト変数の使用
複雑な例
VARCHAR疑似型
制限
標識変数
NULLの処理
切り捨てられた値
ホスト配列
ARRAYLEN文
オプション・キーワードEXECUTE
埋込みPL/SQLのカーソルの使用方法
ストアドPL/SQLおよびJavaサブプログラム
ストアド・サブプログラムの作成について
ストアドPL/SQLまたはJavaサブプログラムのコールについて
無名PL/SQLブロック
リモート・アクセス
CALL文
CALLの例
ストアド・サブプログラムに関する情報を得る方法について
外部プロシージャ
外部プロシージャの制限
外部プロシージャの作成について
SQLExtProcError()
動的SQLの使用方法について
8
ホスト配列
配列を使用する理由
ホスト配列の宣言について
制限事項(ホスト配列の宣言)
配列の最大サイズ
SQL文での配列の使用方法について
ホスト配列の参照について
インジケータ配列の使用方法について
Oracle制限事項(ホスト配列用)
ANSI制限事項および要件
配列への選択について
カーソルのフェッチ
sqlca.sqlerrd[2]の使用について
FETCHされる行数
スクロール可能カーソルのフェッチ
サンプル・プログラム3: ホスト配列
サンプル・プログラム: スクロール可能カーソルを使用するホスト配列
scdemo2.pc
ホスト配列の制限
NULLのフェッチについて
切り捨てられた値のフェッチについて
配列での挿入について
配列での挿入の制限について
配列での更新について
配列での更新の制限について
配列での削除について
配列での削除の制限について
FOR句の使用方法について
FOR句の制限
SELECT文中
CURRENT OF句を使用する場合
WHERE句の使用方法について
構造体配列
構造体の配列の使用方法
構造体の配列の制限
構造体の配列の宣言について
変数のガイドライン
構造体配列へのポインタの宣言について
例
例1: スカラー構造体の単純な配列
例2: スカラーの配列と構造体の配列との組合せ使用
例3: 複数の構造体配列と1つのカーソルとの組合せ使用
FOR句の使用方法について
例4: 個々の配列メンバーおよび構造体メンバーの参照
例5: 標識変数の使用(特殊な場合)
例6: 構造体配列へのポインタの使用
CURRENT OFの疑似実行について
追加の配列の挿入/選択構文の使用について
暗黙的なバッファ済INSERTの使用について
スクロール可能カーソル
9
ランタイム・エラーの処理
エラー処理の必要性
エラー処理の代替手段
状態変数
SQL通信領域
SQLSTATE状態変数
SQLSTATEの宣言について
SQLSTATE値
SQLSTATEの使用について
SQLSTATEを宣言する場合
SQLSTATEを宣言
しない
場合
SQLCODEの宣言について
SQLCAを使用したエラー・レポートの主要コンポーネント
ステータス・コード
警告フラグ
処理済行数
解析エラー・オフセット
エラー・メッセージ・テキスト
SQL通信領域(SQLCA)の使用
SQLCAの宣言について
SQLCAの内容
SQLCAの構造体
sqlcaid
sqlcabc
sqlcode
sqlerrm
sqlerrp
sqlerrd
sqlwarn
sqlext
PL/SQLの考慮事項
エラー・メッセージの全文の取得について
WHENEVERディレクティブの使用について
WHENEVERの条件
SQLWARNING
SQLERROR
NOT FOUND
WHENEVERのアクション
CONTINUE
DO
DO BREAK
DO CONTINUE
GOTO label_name
STOP
WHENEVERの例
DO BREAKとDO CONTINUEの利用
WHENEVER文の適用範囲
WHENEVERのガイドライン
文の位置
データの終わり条件の処理
無限ループの回避について
アドレス指定可能度の維持について
エラー後の戻りについて
SQL文のテキスト取得について
制限事項(SQLStmtGetText()の使用時)
サンプル・プログラム
Oracle通信領域(ORACA)の使用について
ORACAの宣言について
ORACAの有効化について
ORACAの内容
ランタイム・オプションの選択について
ORACAの構造体
oracaid
oracabc
oracchf
oradbgf
orahchf
orastxtf
診断
orastxt
orasfnm
oraslnr
カーソル・キャッシュ統計情報
orahoc
oramoc
oracoc
oranor
oranpr
oranex
ORACAの使用例
10
プリコンパイラのオプション
プリコンパイラのコマンド
大/小文字区別
プリコンパイラのオプション
環境変数
構成ファイル
オプション値の優先順位
マクロ・オプションおよびマイクロ・オプション
プリコンパイル中の状況
オプションの適用範囲
Windowsプラットフォーム用Pro*C/C++プリコンパイラの問題
構成ファイル
CODE
DBMS
INCLUDE
PARSE
クイック・リファレンス
オプションの入力
コマンドライン
インライン
EXEC ORACLEの用途
EXEC ORACLEの適用範囲
列プロパティのサポート
プリコンパイラ・オプションの使用方法について
AUTO_CONNECT
CHAR_MAP
CINCR
CLOSE_ON_COMMIT
CMAX
CMIN
CNOWAIT
CODE
COMMON_PARSER
COMP_CHARSET
CONFIG
CPOOL
CPP_SUFFIX
CTIMEOUT
DB2_ARRAY
DBMS
DEF_SQLCODE
DEFINE
DURATION
DYNAMIC
ERRORS
ERRTYPE
EVENTS
FIPS
HEADER
HOLD_CURSOR
IMPLICIT_SVPT
INAME
INCLUDE
INTYPE
LINES
LNAME
LTYPE
MAX_ROW_INSERT
MAXLITERAL
MAXOPENCURSORS
MODE
NATIVE_TYPES
NLS_CHAR
NLS_LOCAL
OBJECTS
ONAME
ORACA
OUTLINE
OUTLNPREFIX
PAGELEN
PARSE
PLAN_BASELINE
PLAN_PREFIX
PLAN_RUN
PLAN_FIXED
PLAN_ENABLED
MEMFORPREFETCH
PREFETCH
RELEASE_CURSOR
RUNOUTLINE
SELECT_ERROR
STMT_CACHE
SYS_INCLUDE
THREADS
TYPE_CODE
UNSAFE_NULL
USERID
UTF16_CHARSET
VARCHAR
VERSION
11
マルチスレッド・アプリケーション
スレッド
Pro*C/C++のランタイム・コンテキスト
ランタイム・コンテキストの使用モデル
単一のランタイム・コンテキストを共有する複数のスレッド
複数のランタイム・コンテキストを共有する複数のスレッド
マルチスレッド・アプリケーションのユーザー・インタフェース
THREADSオプション
埋込みSQL文およびディレクティブ
EXEC SQL ENABLE THREADS
EXEC SQL CONTEXT ALLOCATE
EXEC SQL CONTEXT USE
EXEC SQL CONTEXT FREE
CONTEXT USEの例
プログラミングの考慮事項
マルチスレッドの例
接続プーリング
接続プーリング機能の使用方法について
接続プーリングを使用可能にする方法
接続プーリングのコマンドライン・オプション
例
パフォーマンス・チューニング
デモ・プログラム: 1
例
デモ・プログラム: 2
ケース1: CMINを変更
ケース2: CMAXを変更
例
第II部 アプリケーション
12
C++アプリケーション
C++サポートの理解
特殊なマクロ処理は不要
C++のプリコンパイル
コードの生成
コードの解析について
出力ファイル名の拡張子
システム・ヘッダー・ファイル
サンプル・プログラム
cppdemo1.pc
cppdemo2.pc
cppdemo3.pc
13
Oracle動的SQL
動的SQL
動的SQLの長所と短所
動的SQLの使用
動的SQL文の要件
動的SQL文の処理方法
動的SQLの使用方法
方法1
方法2
方法3
方法4
ガイドライン
一般的なエラーの回避について
方法1の使用方法
サンプル・プログラム: 動的SQL方法1
方法2の使用方法
USING句
サンプル・プログラム: 動的SQL方法2
方法3の使用方法
PREPARE (動的SQL)
DECLARE (動的SQL)
OPEN (動的SQL)
FETCH (動的SQL)
CLOSE (動的SQL)
サンプル・プログラム: 動的SQL方法3
方法4の使用方法
SQLDAの必要性
DESCRIBE文
SQLDA
Oracle方法4の実装について
制限
DECLARE STATEMENT文の使用方法について
ホスト配列の使用について
PL/SQLの使用について
方法1の場合
方法2の場合
方法3の場合
Oracle方法4の場合
動的SQL文のキャッシュ
14
ANSI動的SQL
ANSI動的SQLの基本
プリコンパイラのオプション
ANSI SQL文の概要
サンプル・コード
Oracle拡張機能
参照セマンティクス
配列を使用したバルク操作について
構造体配列のサポート
オブジェクト型のサポート
ANSI動的SQLプリコンパイラ・オプション
動的SQL文の完全な構文
ALLOCATE DESCRIPTOR
DEALLOCATE DESCRIPTOR
GET DESCRIPTOR
SET DESCRIPTOR
PREPAREの使用
DESCRIBE INPUT
DESCRIBE OUTPUT
EXECUTE
EXECUTE IMMEDIATEの使用
DYNAMIC DECLARE CURSORの使用
OPENカーソル
FETCH
動的カーソルのCLOSE
旧バージョンのOracle動的方法4との相違点
制限事項(ANSI動的SQL)
サンプル・プログラム
ansidyn1.pc
ansidyn2.pc
15
Oracle動的SQL: 方法4
方法4の特殊要件
方法4が特別な理由
Oracleに必要な情報
情報の格納位置
SQLDAの参照方法
情報の取得方法
SQLDAの説明
SQLDAの用途
複数のSQLDA
SQLDAの宣言
SQLDAの割当て
SQLDA変数の使用について
N
変数
V
変数
L
変数
T
変数
I
変数
F
変数
S
変数
M
変数
C
変数
X
変数
Y
変数
Z
変数
予備知識
データの変換
内部データ型
外部データ型
データ型の強制変換
精度と位取りの抽出
NULL/NOT NULLデータ型の処理
基本手順
各ステップの詳細
ホスト文字列の宣言
SQLDAの宣言
記述子用の記憶域の割当て
DESCRIBEへの最大数の設定
ホスト文字列への問合せテキストの設定
ホスト文字列からの問合せのPREPARE
カーソルの宣言
バインド変数のDESCRIBE
プレースホルダの最大数の再設定
バインド変数の値の取得と記憶域の割当て
カーソルのOPEN
選択リストのDESCRIBE
選択リスト項目の最大数の再設定
各選択リスト項目の長さとデータ型の再設定
アクティブ・セットからの行のFETCH
選択リストの値の取得と処理
記憶域の割当て解除
カーソルのCLOSE
ホスト配列の使用について
sample12.pc
サンプル・プログラム: 動的SQL方法4
サンプル・プログラム: スクロール可能カーソルを使用する動的SQL方法4
16
LOB
LOB
内部LOB
外部LOB
BFILEのセキュリティ
LOBとLONGおよびLONG RAWの対比
LOBロケータ
テンポラリLOB
LOBバッファリング・サブシステム
プログラムでのLOBの使用方法
LOBにアクセスする3種類の方法
アプリケーションのLOBロケータ
LOBの初期化
内部LOB
外部LOB
テンポラリLOB
LOBの解放
LOB文のルール
すべてのLOB文に対するルール
LOBバッファリング・サブシステムに対するルール
ホスト変数に対するルール
LOB文
APPEND
ASSIGN
CLOSE (LOB用)
COPY
CREATE TEMPORARY
DISABLE BUFFERING
ENABLE BUFFERING
ERASE
FILE CLOSE ALL
FILE SET
FLUSH BUFFER
FREE TEMPORARY
LOAD FROM FILE
OPEN (LOB用)
READ
TRIM
WRITE
DESCRIBE
LOBおよびナビゲーショナル・アクセス用インタフェース
一時オブジェクト
永続オブジェクト
ナビゲーショナル・アクセス用インタフェースの例
LOBプログラムの例
BLOBのREADおよびファイル書込みの例
ファイルの読込みおよびBLOBのWRITEの例
lobdemo1.pc
17
オブジェクト
オブジェクトの概要
オブジェクト型
オブジェクト型のREF
型の継承
Pro*C/C++でのオブジェクト型の使用について
NULLインジケータ
オブジェクト・キャッシュ
永続オブジェクト対一時コピー
連想アクセス用インタフェース
連想アクセス用インタフェースを使用する場合
ALLOCATE
FREE
CACHE FREE ALL
連想アクセス用インタフェースを使用したオブジェクトへのアクセス
ナビゲーショナル・アクセス用インタフェース
ナビゲーショナル・アクセス用インタフェースを使用する場合
ナビゲーション文に使用されるルール
OBJECT CREATE
OBJECT DEREF
OBJECT RELEASE
OBJECT DELETE
OBJECT UPDATE
OBJECT FLUSH
オブジェクトへのナビゲーショナル・アクセス
オブジェクト属性とC言語のデータ型の変換
OBJECT SET
OBJECT GET
オブジェクト・オプションの設定/取得
CONTEXT OBJECT OPTION SET
CONTEXT OBJECT OPTION GET
オブジェクトに対する新しいプリコンパイラ・オプション
VERSION
DURATION
OBJECTS
INTYPE
ERRTYPE
オブジェクトに対するSQLCHECKのサポート
実行時のタイプ・チェック
Pro*C/C++のオブジェクト例
連想アクセス
ナビゲーショナル・アクセス
型の継承のサンプル・コード
ナビゲーショナル・アクセスのサンプル・コード
C言語の構造体の使用について
REFの使用について
REFのC言語の構造体の生成
REFの宣言
埋込みSQLでのREFの使用
OCIDate、OCIString、OCINumberおよびOCIRawの使用について
OCIDate、OCIString、OCINumber、OCIRawの宣言
埋込みSQLでのOCI型の使用
OCI型の操作
Pro*C/C++の新しいデータベース型の概要
動的SQLでのOracleデータ型使用の制限
18
コレクション
コレクション
NESTED TABLE
VARRAY
C言語およびコレクション
コレクションの記述子
ホスト変数と標識変数の宣言
コレクションの操作について
自律型コレクション・アクセス
コレクション要素アクセス
アクセスのルール
自律型アクセス
要素アクセス
標識変数
自律型バインド
要素バインド
OBJECT GETおよびSET
COLLECTION文
COLLECTION GET
COLLECTION SET
COLLECTION RESET
COLLECTION APPEND
COLLECTION TRIM
COLLECTION DESCRIBE
表について
コレクションを使用する場合の規則
コレクション・サンプル・コード
型および表の作成
GETおよびSETの例
DESCRIBEの例
RESETの例
サンプル・プログラム: coldemo1.pc
19
Object Type Translator(OTT)
OTT概要
Object Type Translator(OTT)
データベースでの型の作成について
OTTの起動について
コマンドライン
構成ファイル
INTYPEファイル
OTTコマンドライン
OTT
Userid
INTYPE
OUTTYPE
CODE
HFILE
INITFILE
INITFUNC
INTYPEファイル
OTTデータ型のマッピング
オブジェクト・データ型のC言語へのマッピング
OTT型マッピングの例
NULLインジケータ構造体
OTTでの型の継承のサポート
置換可能なオブジェクト属性
OUTTYPEファイル
OCIアプリケーションでのOTTの使用方法
OCIでのオブジェクトへのアクセスおよび操作について
初期化関数のコールについて
初期化関数のタスク
Pro*C/C++アプリケーションでのOTTの使用について
OTT参照
OTTコマンドライン構文
OTTパラメータ
USERID
INTYPE
OUTTYPE
CODE
INITFILE
INITFUNC
HFILE
CONFIG
ERRTYPE
CASE
SCHEMA_NAMES
TRANSITIVE
OTTパラメータの使用場所
INTYPEファイルの構造
INTYPEファイルの型指定
ネストした#includeファイル生成
SCHEMA_NAMESの使用方法
デフォルト名のマッピング
制限
ファイル名比較
20
ユーザー・イグジット
ユーザー・イグジット
ユーザー・イグジットを作成する理由
ユーザー・イグジットの開発について
ユーザー・イグジットの作成について
変数の要件
EXEC TOOLS文
Toolsetユーザー・イグジットの作成について
EXEC TOOLS SET
EXEC TOOLS GET
EXEC TOOLS SET CONTEXT
EXEC TOOLS GET CONTEXT
EXEC TOOLS MESSAGE
ユーザー・イグジットのコールについて
ユーザー・イグジットへのパラメータの引渡しについて
フォームへの値の返却について
IAP定数
WHENEVERの使用について
ユーザー・イグジットの使用例
ユーザー・イグジットのプリコンパイルおよびコンパイルについて
サンプル・プログラム: ユーザー・イグジット
GENXTBユーティリティの使用について
SQL*Formsへのユーザー・イグジットのリンクについて
ガイドライン
イグジットの命名について
Oracleへの接続について
I/Oコールの発行について
ホスト変数の使用方法について
表の更新について
コマンドの発行について
第III部 付録
A
予約語、キーワードおよびネームスペース
予約語およびキーワード
Oracleの予約済ネームスペース
B
パフォーマンス・チューニング
パフォーマンスを低下させる原因
パフォーマンスの改善方法
ホスト配列の使用について
埋込みPL/SQLの使用について
SQL文の最適化について
オプティマイザ・ヒント
トレース機能
文キャッシュについて
索引の使用について
行レベル・ロックの利用について
不要な解析の排除について
明示カーソルの操作について
カーソルの制御
カーソル管理オプションの使用について
SQL領域とカーソル・キャッシュ
リソースの使用
実行回数が少ない場合
実行回数が多い場合
埋込みPL/SQLの考慮事項
パラメータの相互作用
不要な再解析の回避について
接続プーリングの使用方法について
C
構文およびセマンティックのチェック
構文検査と意味検査
検査の種類および範囲の制御について
SQLCHECK=SEMANTICSの指定について
意味検査の使用許可について
Oracleサーバーへの接続について
DECLARE TABLEの使用について
DECLARE TYPEの使用について
SQLCHECK=SYNTAXの指定について
SQLCHECKオプションの入力について
D
システム固有の参照
システム固有の情報
標準ヘッダー・ファイルの位置
Cコンパイラ用インクルード・ファイルの位置指定について
ANSI Cサポート
構造体コンポーネントの位置合せ
整数とROWIDのサイズ
バイト順序
Oracleサーバーへの接続について
XAライブラリでのリンクについて
Pro*C/C++実行可能ファイルの位置
システム構成ファイル
INCLUDEオプションの構文
コンパイルとリンクについて
ユーザー・イグジット
E
埋込みSQL文およびディレクティブ
プリコンパイラのディレクティブと埋込みSQL文の概要
文の説明
構文図の読み方
必須のキーワードとパラメータ
オプションのキーワードとパラメータ
構文のループ
複数パーツの図
Oracleの名前
文の終了記号
ALLOCATE(実行可能埋込みSQL拡張機能)
ALLOCATE DESCRIPTOR(実行可能埋込みSQL)
CACHE FREE ALL(実行可能埋込みSQL拡張機能)
CALL(実行可能埋込みSQL)
CLOSE(実行可能埋込みSQL)
COLLECTION APPEND(実行可能埋込みSQL拡張機能)
COLLECTION DESCRIBE(実行可能埋込みSQL拡張機能)
COLLECTION GET(実行可能埋込みSQL拡張機能)
COLLECTION RESET(実行可能埋込みSQL拡張機能)
COLLECTION SET(実行可能埋込みSQL拡張機能)
COLLECTION TRIM(実行可能埋込みSQL拡張機能)
COMMIT(実行可能埋込みSQL)
CONNECT(実行可能埋込みSQL拡張機能)
CONTEXT ALLOCATE(実行可能埋込みSQL拡張機能)
CONTEXT FREE(実行可能埋込みSQL拡張機能)
CONTEXT OBJECT OPTION GET(実行可能埋込みSQL拡張機能)
CONTEXT OBJECT OPTION SET(実行可能埋込みSQL拡張機能)
CONTEXT USE(Oracle埋込みSQLディレクティブ)
DEALLOCATE DESCRIPTOR(埋込みSQL文)
DECLARE CURSOR(埋込みSQLディレクティブ)
DECLARE DATABASE(Oracle埋込みSQLディレクティブ)
DECLARE STATEMENT(埋込みSQLディレクティブ)
DECLARE TABLE(Oracle埋込みSQLディレクティブ)
DECLARE TYPE(Oracle埋込みSQLディレクティブ)
DELETE(実行可能埋込みSQL)
DESCRIBE(実行可能埋込みSQL拡張機能)
DESCRIBE DESCRIPTOR(実行可能埋込みSQL)
ENABLE THREADS(実行可能埋込みSQL拡張機能)
EXECUTE ... END-EXEC(実行可能埋込みSQL拡張機能)
EXECUTE(実行可能埋込みSQL)
EXECUTE DESCRIPTOR(実行可能埋込みSQL)
EXECUTE IMMEDIATE(実行可能埋込みSQL)
FETCH(実行可能埋込みSQL)
FETCH DESCRIPTOR(実行可能埋込みSQL)
FREE(実行可能埋込みSQL拡張機能)
GET DESCRIPTOR(実行可能埋込みSQL)
INSERT(実行可能埋込みSQL)
LOB APPEND(実行可能埋込みSQL拡張機能)
LOB ASSIGN(実行可能埋込みSQL拡張機能)
LOB CLOSE(実行可能埋込みSQL拡張機能)
LOB COPY(実行可能埋込みSQL拡張機能)
LOB CREATE TEMPORARY(実行可能埋込みSQL拡張機能)
LOB DESCRIBE(実行可能埋込みSQL拡張機能)
LOB DISABLE BUFFERING(実行可能埋込みSQL拡張機能)
LOB ENABLE BUFFERING(実行可能埋込みSQL拡張機能)
LOB ERASE(実行可能埋込みSQL拡張機能)
LOB FILE CLOSE ALL(実行可能埋込みSQL拡張機能)
LOB FILE SET(実行可能埋込みSQL拡張機能)
LOB FLUSH BUFFER(実行可能埋込みSQL拡張機能)
LOB FREE TEMPORARY(実行可能埋込みSQL拡張機能)
LOB LOAD(実行可能埋込みSQL拡張機能)
LOB OPEN(実行可能埋込みSQL拡張機能)
LOB READ(実行可能埋込みSQL拡張機能)
LOB TRIM(実行可能埋込みSQL拡張機能)
LOB WRITE(実行可能埋込みSQL拡張機能)
OBJECT CREATE(実行可能埋込みSQL拡張機能)
OBJECT DELETE(実行可能埋込みSQL拡張機能)
OBJECT DEREF(実行可能埋込みSQL拡張機能)
OBJECT FLUSH(実行可能埋込みSQL拡張機能)
OBJECT GET(実行可能埋込みSQL拡張機能)
OBJECT RELEASE(実行可能埋込みSQL拡張機能)
OBJECT SET(実行可能埋込みSQL拡張機能)
OBJECT UPDATE(実行可能埋込みSQL拡張機能)
OPEN(実行可能埋込みSQL)
OPEN DESCRIPTOR(実行可能埋込みSQL)
PREPARE(実行可能埋込みSQL)
REGISTER CONNECT(実行可能埋込みSQL拡張機能)
ROLLBACK(実行可能埋込みSQL)
SAVEPOINT(実行可能埋込みSQL)
SELECT(実行可能埋込みSQL)
SET DESCRIPTOR(実行可能埋込みSQL)
TYPE(Oracle埋込みSQLディレクティブ)
UPDATE(実行可能埋込みSQL)
VAR(Oracle埋込みSQLディレクティブ)
WHENEVER(埋込みSQLディレクティブ)
F
サンプル・プログラム
サンプル・プログラムの説明
サンプル表の作成
サンプル・プログラムのビルドについて
pcmake.batを使用する方法
Microsoft Visual Studioを使用する方法
サンプル.preファイルのパスの設定
G
Microsoft Visual Studio .NETへのPro*C/C++の統合
Pro*C/C++のMicrosoft Visual Studio .NETプロジェクトへの統合
Pro*C/C++実行可能ファイルの位置の指定
Pro*C/C++ヘッダー・ファイルの位置の指定
プロジェクトへの.pcファイルの追加
プロジェクトへの.cファイルの参照の追加
プロジェクトへのPro*C/C++のライブラリの追加
カスタム・ビルド・オプションの指定
「ツール」メニューへのPro*C/C++の追加
索引