ヘッダーをスキップ

Oracle Database アプリケーション開発者ガイド-基礎編
10gリリース2(10.2)

B19248-02
索引
索引

次へ

目次

タイトルおよび著作権情報

はじめに

対象読者
ドキュメントのアクセシビリティについて
関連ドキュメント
表記規則
サポートおよびサービス

アプリケーション開発のための新機能

Oracle Database 10gリリース2(10.2)の新機能
Oracle Database 10gリリース1(10.1)の新機能

1  Oracleプログラム環境の概要

Oracleアプリケーション開発の概要
PL/SQLの概要
PL/SQLの概要
PL/SQLのメリット
Oracle Databaseとの統合
パフォーマンスの向上
生産性の向上
スケーラビリティ
管理性
オブジェクト指向プログラミングのサポート
移植性
セキュリティ
組込みパッケージ
PL/SQL Web開発ツール
データベースに組み込まれたJavaサポートの概要
Oracle JVMの概要
JDBCに対するOracle拡張機能の概要
JDBC Thinドライバ
JDBC OCIドライバ
サーバー側JDBC内部ドライバ
JDBC標準に対するOracle Database拡張機能
JDBC 2.0のサンプル・プログラム
JDBC 2.0より前のサンプル・プログラム
SQLJアプリケーションでのJDBC
Oracle SQLJの概要
SQLJのメリット
SQLJとJDBCの比較
サーバー内のSQLJストアド・プロシージャ
Oracle JPublisherの概要
Javaストアド・プロシージャの概要
Oracle Database Webサービスの概要
Webサービス・プロバイダとしてのOracle Database
Javaでのプロシージャおよびファンクションの作成の概要
Javaでのデータベース・トリガーの作成の概要
ストアド・プロシージャおよびトリガーにJavaを使用する理由
Pro*C/C++の概要
Pro*C/C++アプリケーションの実装
Pro*C/C++機能の特長
Pro*COBOLの概要
Pro*COBOLアプリケーションの実装方法
Pro*COBOL機能の特長
OCIおよびOCCIの概要
OCIのメリット
OCIの構成要素
手続き型要素および非手続き型要素
OCIアプリケーションの作成
Oracle Data Provider for .NET(ODP.NET)の概要
単純なアプリケーションでのODP.NETの使用
Oracle Objects for OLE(OO4O)の概要
OO4Oオートメーション・サーバー
OO4Oオブジェクト・モデル
OraSession
OraServer
OraDatabase
OraDynaset
OraField
OraMetaDataおよびOraMDAttribute
OraParametersおよびOraParameter
OraParamArray
OraSQLStmt
OraAQ
OraAQMsg
OraAQAgent
Oracle LOBおよびオブジェクト・データ型のサポート
OraBLOBおよびOraCLOB
OraBFILE
Oracle Data Control
Oracle Objects for OLE C++クラス・ライブラリ
その他の情報源
プログラミング環境の選択
OCIまたはプリコンパイラの使用の選択
組込みパッケージおよびライブラリの使用
JavaとPL/SQLの比較
データベース・アクセス用に最適化されたPL/SQL
データベースと統合されたPL/SQL
JavaおよびPL/SQLが持つオブジェクト指向機能
オープン分散アプリケーションに使用されるJava

第I部 アプリケーション開発者用のSQL

2  アプリケーション開発者用のSQL処理

操作のトランザクションへのグループ化
トランザクションへの操作のグループ化方法の決定
トランザクションのパフォーマンスの改善
トランザクションのコミット
コミットREDO動作の管理
トランザクションのロールバック
トランザクションのセーブポイントの定義
COMMIT、SAVEPOINTおよびROLLBACKの例
読取り専用トランザクションでの反復可能読取りの保証
アプリケーションでのカーソルの使用
カーソルの宣言およびオープン
カーソルを使用した文の再実行
カーソルのクローズ
カーソルの取消し
明示的なデータのロック
ロック方法の選択
ROW SHAREおよびROW EXCLUSIVEモードでロックする場合
SHAREモードでロックする場合
SHARE ROW EXCLUSIVEモードでロックする場合
EXCLUSIVEモードでロックする場合
必要な権限
Oracle Databaseによる表ロック制御
明示的な行ロック
ユーザー・ロック
ユーザー・ロックを使用する場合
ユーザー・ロックの例
ロックの表示および監視
シリアライズ可能トランザクションを使用した同時実行性の制御
シリアライズ可能トランザクションの相互作用
トランザクションの分離レベルの設定
INITRANSパラメータ
参照整合性およびシリアライズ可能トランザクション
SELECT FOR UPDATEの使用
READ COMMITTED分離およびSERIALIZABLE分離
トランザクション集合の整合性
コミット読込みトランザクションとシリアライズ可能トランザクションの比較
トランザクションの分離レベルの選択
トランザクションのためのアプリケーションのヒント
自律型トランザクション
自律型トランザクションの例
購入注文の入力
例: 預金払戻しの実行
自律型トランザクションの定義
自律型トランザクションの制限事項
記憶域エラー状態の後の実行の再開
エラー状態の後に再開可能な操作
エラー状態の後の操作再開における制限
一時停止された記憶域割当てを処理するアプリケーションの作成
再開可能記憶域割当ての例

3  アプリケーション開発におけるSQLデータ型の使用

SQLデータ型によるデータの表現: 概要
文字データの表現
文字データの表現: 概要
バイト数または文字数としての列の長さの指定
CHARデータ型およびVARCHAR2データ型間の選択
SQL文における文字リテラルの使用
文字リテラルの引用符付け
数値データの表現
数値データ型とは
浮動小数点数形式の使用
浮動小数点2進形式の使用
ネイティブ浮動小数点形式を使用した特殊な数値の表現
ネイティブ浮動小数点データ型の比較演算子の使用
ネイティブ浮動小数点データ型を使用した算術演算の実行
ネイティブ浮動小数点データ型の変換関数の使用
ネイティブ浮動小数点データ型のクライアント・インタフェース
OCIのネイティブ浮動小数点データ型SQLT_BFLOATおよびSQLT_BDOUBLE
Oracle OBJECT型でサポートされるネイティブ浮動小数点データ型
ネイティブ浮動小数点データ型のPro*C/C++サポート
日時データの表現
日時データの表現: 概要
DATEデータ型の使用
TIMESTAMPデータ型の使用
TIMESTAMP WITH TIME ZONEデータ型の使用
TIMESTAMP WITH LOCAL TIME ZONEデータ型の使用
2つの日時値の違いの表現
日付書式の操作
デフォルトの日付書式の変更
現在の日付および時刻の表示
時刻書式の操作
日付算術の実行
日時データ型間の比較
日時データ型のインポートおよびエクスポート
特殊なデータの表現
地理データの表現
マルチメディア・データの表現
大量のデータの表現
RAWデータ型およびLONG RAWデータ型の使用
検索可能なテキストの表現
XMLの表現
動的に型指定されたデータの表現
ANSI/ISOデータ型、DB2データ型およびSQL/DSデータ型によるデータの表現
条件式のデータとしての表現
アドレスによる行の識別
ROWID疑似列の問合せ
ROWIDデータ型へのアクセス
制限付きROWID
拡張ROWID
外部バイナリROWID
UROWIDデータ型へのアクセス
Oracle Databaseによるデータ型の変換方法
代入中のデータ変換
式の評価中のデータ型変換

4  Oracle Databaseデータベースでの正規表現の使用

Oracle Databaseでの正規表現の使用: 概要
正規表現の概要
Oracle Databaseでの正規表現の有用性
Oracle Databaseの正規表現の実装
Oracle DatabaseのPOSIX正規表現標準のサポート
Oracle Databaseの正規表現のメタキャラクタ
Oracle Database正規表現内のPOSIXメタキャラクタ
正規表現演算子の多言語拡張機能
Oracle正規表現でPerlの影響を受ける拡張機能
SQL文での正規表現の使用: 例
整合性制約を使用した電話番号書式の規定
後方参照を使用した文字の再配置

5  アプリケーション開発のための索引の使用

アプリケ−ション固有の索引のガイドライン
表データ挿入後の索引の作成
索引作成時の問題を回避するための一時表領域の切替え
正しい表および列の索引付け
表当たりの索引数の制限
複合索引の列の順序付け
索引の使用率をさらに正確にするための統計の収集
不要な索引の削除
索引の作成に必要な権限
索引の作成の基本例
ドメイン索引を使用する場合
ファンクション索引を使用する場合
ファンクション索引のメリット
ファンクション索引の例
例: 大/小文字を区別しない検索用のファンクション索引
例: ファンクション索引による算術式の事前計算
例: 言語依存ソート用のファンクション索引
ファンクション索引の制限

6  アプリケーション開発におけるデータ整合性のメンテナンス

整合性制約の概要
整合性制約でビジネス・ルールを施行する場合
ビジネス・ルールに対する整合性制約の例
アプリケーションでビジネス・ルールを施行する場合
制約で使用する索引の作成
NOT NULL整合性制約を使用する場合
デフォルトの列値を使用する場合
デフォルトの列値の設定
表の主キーの選択
一意キー整合性制約を使用する場合
データの整合性ではなくパフォーマンスを目的としたビューに対する制約
制約を使用した参照整合性の施行
NULLおよび外部キー
親表と子表との関連の定義
複数の外部キー制約に関する規則
制約チェックの遅延
制約チェックの遅延に関するガイドライン
対応付けられた索引がある制約の管理
制約に対応付けられた索引の領域と時間のオーバーヘッドの最小化
外部キーを索引付けするためのガイドライン
分散データベース内の参照整合性
CHECK整合性制約を使用する場合
CHECK制約の制限
CHECK制約の設計
複数のCHECK制約に関する規則
CHECKおよびNOT NULL整合性制約の選択
整合性制約の定義の例
例: CREATE TABLEコマンドを使用した整合性制約の定義
例: ALTER TABLEコマンドを使用した制約の定義
制約の作成に必要な権限
整合性制約のネーミング
整合性制約の使用可能および使用禁止
制約を使用禁止にする理由
整合性制約の例外
制約を使用可能にする
制約を使用禁止にする
既存の整合性制約の使用可能および使用禁止
既存の制約を使用可能にする
既存の制約を使用禁止にする
ヒント: データ・ディクショナリを使用した制約の検索
キー整合性制約の使用可能および使用禁止に関するガイドライン
制約の例外の修正
整合性制約の変更
整合性制約名の変更
整合性制約の削除
外部キー整合性制約の管理
外部キー列のデータ型および名前
複合外部キーにおける列の制限
デフォルトでの外部キーの主キー参照
外部キー整合性制約の作成に必要な権限
外部キーによる参照整合性の施行方法の選択
整合性制約の定義のビュー
整合性制約の定義の例

第II部 アプリケーション開発者用のPL/SQL

7  PL/SQLプロシージャおよびパッケージのコード化

PL/SQLプログラム・ユニットの概要
無名ブロック
ストアド・プログラム・ユニット(プロシージャ、ファンクションおよびパッケージ)
プロシージャおよびファンクションのネーミング
プロシージャおよびファンクションのパラメータ
ストアド・プロシージャおよびファンクションの作成
ストアド・プロシージャおよびファンクションの変更
プロシージャおよびファンクションの削除
外部プロシージャ
PL/SQLパッケージ
PL/SQLオブジェクト・サイズの制限
パッケージの作成
パッケージおよびパッケージ・オブジェクトのネーミング
パッケージの無効化とセッションの状態
Oracle Databaseが提供するパッケージ
バルク・バインドの概要
バルク・バインドを使用する場合
トリガー
ネイティブ実行のためのPL/SQLプロシージャのコンパイル
リモート依存性
タイムスタンプ
タイムスタンプ・モデルのデメリット
シグネチャ
シグネチャが変更される時点
プロシージャ・シグネチャの変更例
リモート依存性の制御
依存性の解決
依存性を管理するための提案
カーソル変数
カーソル変数の宣言およびオープン
カーソル変数の例
データのフェッチ
可変レコードの実装
PL/SQLコンパイル時のエラー処理
PL/SQLのランタイム・エラー処理
例外および例外処理ルーチンの宣言
未処理例外
分散問合せでのエラー処理
リモート・プロシージャでのエラー処理
ストアド・プロシージャのデバッグ
ストアド・プロシージャのコール
別のプロシージャをコールするプロシージャまたはトリガー
Oracle Databaseのツール製品からのプロシージャの対話形式コール
3GLアプリケーション内でのプロシージャのコール
プロシージャ・コール時の名前の変換
プロシージャの実行に必要な権限
プロシージャ引数の値の指定
リモート・プロシージャのコール
リモート・プロシージャのコールおよびパラメータ値
リモート・オブジェクトの参照
プロシージャおよびパッケージのシノニム
SQL式からのストアド・ファンクションのコール
PL/SQLファンクションの使用
PL/SQLファンクションをコールするSQL構文
ネーミング規則
名前の優先順位
引数
デフォルト値の使用
権限
SQL式からのPL/SQLファンクションのコール要件
副作用の制御
制限事項
ファンクションの宣言
パラレル問合せおよびパラレルDML
下位互換性のためのPRAGMA RESTRICT_REFERENCES
逐次再利用可能PL/SQLパッケージ
パッケージ状態
逐次再利用可能パッケージを使用する理由
逐次再利用可能パッケージの構文
逐次再利用可能パッケージのセマンティック
逐次再利用可能パッケージの例
ファンクションからの大量のデータの戻し
独自の集計関数のコード化

8  動的SQLのコーディング

動的SQLの概要
動的SQLを使用したプログラミング
動的SQLを使用する理由
PL/SQLでのDDL文およびSCL文の実行
動的問合せの実行
コンパイル時には存在しないデータベース・オブジェクトの参照
実行の動的最適化
動的PL/SQLブロックの実行
実行者権限を使用した動的操作の実行
ネイティブ動的SQLを使用した開発: 使用例
ネイティブ動的SQLによるDML操作例
ネイティブ動的SQLによるDDL操作例
ネイティブ動的SQLによる単一行問合せ例
ネイティブ動的SQLによる複数行問合せ例
ネイティブ動的SQLまたはDBMS_SQLパッケージの選択
ネイティブ動的SQLのメリット
使用しやすさ
DBMS_SQLパッケージを超える速度
ユーザー定義型のサポート
レコードへのフェッチのサポート
DBMS_SQLパッケージのメリット
クライアント側プログラムでのサポート
入力数または出力数が不明な文のサポート
32KBを超える大規模SQL文のサポート
SQL文の再利用
DBMS_SQLパッケージ・コードおよびネイティブ動的SQLコードの例
動的SQLを使用した問合せの例
動的SQLを使用したDMLの実行例
動的SQLを使用したRETURNING句を持つDMLの実行例
PL/SQLでのSQLインジェクションの回避
SQLインジェクション手法の概要
文の変更
文のインジェクション
SQLインジェクションの防止
バインド変数を使用したSQLインジェクションの防止
妥当性チェックを使用したSQLインジェクションの防止

9  トリガーのコーディング

トリガーの設計
トリガーの作成
トリガーの種類
システム・イベントの概要
システム・イベント属性の取得
トリガーのネーミング
トリガーが起動するタイミング
インポートおよびSQL*Loaderによるトリガー起動
列リストのUPDATEトリガーに対する影響
トリガー起動の制御(BEFOREオプションおよびAFTERオプション)
トリガーの順序
複合ビューの変更(INSTEAD OFトリガー)
INSTEAD OFトリガーが必要なビュー
INSTEAD OFトリガーの例
オブジェクト・ビューおよびINSTEAD OFトリガー
ネストした表のビューの列に対するトリガー
1回または複数回のトリガーの起動(FOR EACH ROWオプション)
条件に基づいたトリガーの起動(WHEN句)
トリガー本体のコーディング
行トリガーでの列値のアクセス
例: トリガーによるLOB列の変更
ネストした表のビューの列に対するINSTEAD OFトリガー
トリガーとの名前の競合の回避(REFERENCINGオプション)
トリガーを起動するDML操作の検出
トリガー本体内のエラー条件および例外
オブジェクト表に対するトリガー
トリガーおよびリモート例外処理
トリガー作成の制限
トリガー・ユーザーとは
トリガーの使用に必要な権限
トリガーのコンパイル
トリガーの依存関係
トリガーの再コンパイル
トリガーの変更
トリガーのデバッグ
トリガーの使用可能および使用禁止
トリガーの使用可能
トリガーの使用禁止
トリガーに関する情報のリスト
トリガー・アプリケーションの例
トリガーを介したシステム・イベントに対する応答
トリガーを介したイベントの発行方法
発行コンテキスト
エラー処理
実行モデル
イベント属性関数
データベース・イベントのリスト
システム・イベント
クライアント・イベント

10 フラッシュバック・アプリケーションの開発

フラッシュバック機能の概要
アプリケーション開発機能
データベース管理機能
フラッシュバック機能を使用する前のデータベース管理タスク
フラッシュバック問合せ(SELECT ...AS OF)の使用
過去のデータの検査: 例
フラッシュバック問合せの使用に関するヒント
DBMS_FLASHBACKパッケージの使用
ORA_ROWSCNの使用
フラッシュバック・バージョン問合せの使用
フラッシュバック・トランザクション問合せの使用
フラッシュバック・トランザクション問合せおよびフラッシュバック・バージョン問合せ: 例
フラッシュバックのヒント
フラッシュバックのヒント: パフォーマンス
フラッシュバックのヒント: 要約

11 PL/SQL Web Toolkitを使用したWebアプリケーションの開発

PL/SQL Webアプリケーションの開発: 概要
PL/SQL Webアプリケーションの起動
PL/SQL Webアプリケーションの実装
PL/SQL Web Toolkit
mod_plsqlゲートウェイの使用
PL/SQLを使用したHTML出力の生成
PL/SQL Webアプリケーションへのパラメータ渡し
HTMLフォームからのリスト・パラメータおよびドロップダウン・リスト・パラメータ渡し
HTMLフォームからのラジオ・ボタン・パラメータおよびチェックボックス・パラメータ渡し
HTMLフォームからの入力フィールド・パラメータ渡し
HTMLフォームからの非表示パラメータ渡し
HTMLフォームからのファイルのアップロード
記入済HTMLフォームの送信
HTMLフォームの欠落した入力の処理
Webページ間での状態情報の保持
PL/SQLストアド・プロシージャでのネットワーク操作の実行
PL/SQLからの電子メールの送信
PL/SQLからのホスト名またはアドレスの取得
PL/SQLからのTCP/IP接続を使用した処理
PL/SQLからのHTTP URLのコンテンツの取得
PL/SQLからの表、イメージ・マップ、Cookie、およびCGI変数を使用した処理

12 PL/SQL Server Pagesの開発

PL/SQL Server Pages: 概要
PL/SQL Server Pagesの概要およびPL/SQL Server Pagesを使用する理由
PL/SQL Server Pagesを開発して配置するための前提条件
PSPおよびHTPパッケージ
PSPとその他のスクリプティング・ソリューション
PL/SQL Server Pagesの作成
基本的なPL/SQL Server Pages特性の指定
スクリプト言語の指定
クライアントへのデータの戻し方
スクリプト・エラーの処理
ユーザー入力の受入れ
PL/SQLストアド・プロシージャのネーミング
他のファイルのコンテンツの挿入
PSPスクリプトでのグローバル変数の宣言
PSPスクリプトでの実行可能文の指定
PSPスクリプトでの式結果の置換
PSPスクリプトでの文字列の引用符およびエスケープ
PSPスクリプトへのコメントの挿入
データベースへのPL/SQL Server Pagesのロード
PSPソース・コードの問合せ
URLを介したPL/SQL Server Pagesの実行
PL/SQL Server Pagesの例
PL/SQL Server Pagesの例のための設定
ループを使用したサンプル表の出力
ユーザー選択の許可
HTMLフォームを使用したPL/SQL Server Pagesのコール
PSPファイルへのJavaScriptの挿入
PL/SQL Server Pagesのデバックに関する問題
PL/SQL Server Pagesの商品化

13 データベース変更通知を使用したアプリケーション開発

データベース変更通知の概要
中間層におけるデータベース変更通知の使用
データベース変更通知に対する問合せの登録
権限
データベース変更登録の概要
サポートされる問合せタイプ
登録プロパティ
表の削除
データベース変更登録用インタフェース
変更通知受信者としてのPL/SQLストアド・プロシージャの作成
PL/SQLを介した変更通知への問合せの登録
CHNF$_REG_INFOオブジェクトの作成
DBMS_CHANGE_NOTIFICATIONを使用した登録の作成
既存の登録へのオブジェクトの追加
変更通知登録の問合せ
データベース変更通知の解析
CHNF$_DESCオブジェクトの解析
CHNF$_TDESCオブジェクトの解析
CHNF$_RDESCオブジェクトの解析
データベース変更通知の構成: 使用例
PL/SQLコールバック・プロシージャの作成
問合せの登録
ベスト・プラクティス
トラブルシューティング

第III部 アプリケーション開発者向けの高度なトピック

14 外部プロシージャのコール

複数言語プログラムの概要
外部プロシージャの概要
外部プロシージャ用のコール仕様の概要
外部プロシージャのロード
Javaクラス・メソッドのロード
外部Cプロシージャのロード
外部プロシージャの公開
Javaクラス・メソッド用のAS LANGUAGE句
外部Cプロシージャ用のAS LANGUAGE句
LIBRARY
NAME
LANGUAGE
CALLING STANDARD
WITH CONTEXT
PARAMETERS
AGENT IN
Javaクラス・メソッドの発行
外部Cプロシージャの発行
コール仕様の位置
コール仕様による外部Cプロシージャへのパラメータの受渡し
データ型の指定
外部データ型のマッピング
INおよびIN OUTパラメータ・モードのBY VALUE/BY REFERENCE
PARAMETERS句
デフォルトのデータ型マッピングのオーバーライド
プロパティの指定
INDICATOR
LENGTHおよびMAXLEN
CHARSETIDおよびCHARSETFORM
パラメータの再配置
SELFの使用
参照によるパラメータ渡し
WITH CONTEXT
言語間のパラメータ・モードのマッピング
CALL文による外部プロシージャの実行
外部プロシージャの事前条件
外部プロシージャの権限
許可の管理
外部プロシージャのシノニムの作成
CALL文の構文
Javaクラス・メソッドのコール
データベース・サーバーによる外部Cプロシージャのコール方法
複数言語のプログラム・エラーおよび例外処理
外部Cプロシージャでのサービス・プロシージャの使用
外部Cプロシージャを使用したコールバックの実行
OCIコールバック用のオブジェクト・サポート
コールバックに関する制限事項
外部プロシージャのデバッグ
パッケージDEBUG_EXTPROCの使用
デモ・プログラム
外部Cプロシージャのためのガイドライン
外部Cプロシージャに関する制限事項

15 Oracle XAを使用したアプリケーションの開発

X/Open DTP
DTP用語
必須のパブリック情報
Oracle XAライブラリ・インタフェース・サブルーチン
XAライブラリ・サブルーチン
XAインタフェースの拡張
XAアプリケーションの開発およびインストール
DBAまたはシステム管理者の責任
アプリケーション開発者の責任
xa_open()文字列の定義
xa_open()文字列の構文
xa_open()文字列の必須フィールド
xa_open()文字列のオプション・フィールド
プリコンパイラとOCIのXAインタフェース
プリコンパイラでのOracle XAライブラリの使用
OCIでのOracle XAライブラリの使用
XAを使用したトランザクション制御の管理
プリコンパイラ・アプリケーションの例
プリコンパイラまたはOCIアプリケーションのTPMアプリケーションへの移行
XAライブラリ・スレッド・セーフティの管理
オープン文字列でのスレッドの指定
XAのスレッドにおける制限事項
XAアプリケーションのトラブルシューティング
XAトレース・ファイルへのアクセス
xa_open()文字列DbgFl
トレース・ファイルの位置
インダウト・トランザクションまたはペンディング・トランザクションの管理
SYSアカウント表を使用したXAトランザクションの監視
XAの問題および制限事項
XAアプリケーションでのデータベース・リンクの使用
XAアプリケーションでのトランザクション・ブランチの管理
Oracle Real Application ClustersでのXAの使用
Oracle Real Application Clusters(RAC)でのトランザクション・ブランチの管理
Real Application Clustersでのインスタンス・リカバリの管理
Real Application ClustersのXIDのグローバル一意性
SQLに基づくXAの制限事項
ロールバックおよびコミット
DDL文
セッション状態
EXEC SQL
その他の制限事項

16 パブリッシュ・サブスクライブ・モデルでのアプリケーションの開発

パブリッシュ・サブスクライブの概要
パブリッシュ・サブスクライブのアーキテクチャ
パブリッシュ・サブスクライブの概念
パブリッシュ・サブスクライブ・メカニズムの例

索引


次へ
Oracle
Copyright © 2006 Oracle Corporation.

All Rights Reserved.
索引
索引