ヘッダーをスキップ

Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス
10g リリース2(10.2)

B19257-01
索引
索引

次へ

目次

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

はじめに

対象読者
ドキュメントのアクセシビリティについて
このマニュアルの構成
PL/SQLのサンプル・プログラム
関連ドキュメント
表記規則
サポートおよびサービス

PL/SQLの新機能

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

1  PL/SQLの概要

PL/SQLのメリット
SQLとの緊密な統合
高いパフォーマンス
高い生産性
完全な移植性
優れたセキュリティ
事前定義パッケージへのアクセス
オブジェクト指向プログラミングのサポート
WebアプリケーションおよびWebページ開発のサポート
PL/SQLの主な特長
PL/SQLブロック構造
PL/SQLの変数および定数
変数の宣言
変数への値の代入
バインド変数
定数の宣言
PL/SQLを使用した問合せの処理
PL/SQLサブプログラムの宣言
PL/SQL変数のデータ型の宣言
%TYPE
%ROWTYPE
PL/SQLの制御構造
条件制御
反復制御
順次制御
条件付きコンパイル
再利用可能なPL/SQLコードの作成
サブプログラム: プロシージャおよび機能
パッケージ: PL/SQLで記述されたAPI
PL/SQLを使用したデータの入出力
PL/SQLのデータの抽象化
カーソル
コレクション
レコード
オブジェクト型
PL/SQLエラーの処理
PL/SQLアーキテクチャ
Oracleデータベース・サーバー
無名ブロック
ストアド・サブプログラム
データベース・トリガー
Oracleのツール製品

2  PL/SQL言語の基礎

キャラクタ・セットおよび字句単位
デリミタ
識別子
予約語
事前定義の識別子
二重引用符で囲んだ識別子
リテラル
数値リテラル
文字リテラル
文字列リテラル
ブール・リテラル
日時リテラル
コメント
単一行コメント
複数行コメント
コメントの制限
宣言
定数
DEFAULTの使用
NOT NULLの使用
%TYPE属性の使用
%ROWTYPE属性の使用
集計代入
エイリアシングの使用
宣言の制限
PL/SQLのネーミング規則
PL/SQLの識別子の有効範囲と可視性
変数への値の代入
ブール値の代入
SQL問合せ結果のPL/SQL変数への代入
PL/SQLの式および比較
論理演算子
評価の順序
短絡評価
比較演算子
関係演算子
IS NULL演算子
LIKE演算子
BETWEEN演算子
IN演算子
連結演算子
ブール式
ブール算術式
ブール文字式
ブール日付式
PL/SQLブール式のガイドライン
CASE式
単純なCASE式
検索CASE式
比較文と条件文でのNULLの扱い
NULLとNOT演算子
条件付きコンパイル
条件付きコンパイルの動作方法
条件付きコンパイルの制御トークン
条件付きコンパイルの選択ディレクティブの使用
条件付きコンパイルのエラー・ディレクティブの使用
条件付きコンパイルの問合せディレクティブの使用
条件付きコンパイルでの事前定義問合せディレクティブの使用
条件付きコンパイルでの静的な式の使用
PLSQL_CCFLAGS初期化パラメータの設定
DBMS_DB_VERSIONパッケージ定数の使用
条件付きコンパイルの例
条件付きコンパイルを使用してデータベースのバージョンのコードを指定する方法
DBMS_PREPROCESSORプロシージャを使用してソース・テキストの印刷または取出しを行う方法
条件付きコンパイルの制限
PL/SQLを使用してWebアプリケーションおよびServer Pagesを作成する方法
PL/SQL Webアプリケーション
PL/SQL Server Pages
PL/SQLの組込みファンクションのまとめ

3  PL/SQLのデータ型

事前定義されたPL/SQLデータ型の概要
PL/SQLの数値型
BINARY_INTEGERデータ型
BINARY_FLOATおよびBINARY_DOUBLEデータ型
NUMBERデータ型
PLS_INTEGERデータ型
PL/SQLの文字型と文字列型
CHARデータ型
LONGおよびLONG RAWデータ型
RAWデータ型
ROWIDおよびUROWIDデータ型
VARCHAR2データ型
PL/SQLの各国語キャラクタ・タイプ
UTF8およびAL16UTF16エンコーディング
NCHARデータ型
NVARCHAR2データ型
PL/SQL LOB型
BFILEデータ型
BLOBデータ型
CLOBデータ型
NCLOBデータ型
PL/SQLのブール型
BOOLEANデータ型
PL/SQLの日付型、時刻型および時間隔型
DATEデータ型
TIMESTAMPデータ型
TIMESTAMP WITH TIME ZONEデータ型
TIMESTAMP WITH LOCAL TIME ZONEデータ型
INTERVAL YEAR TO MONTHデータ型
INTERVAL DAY TO SECONDデータ型
日時および時間隔の演算
日付および時刻のサブタイプを使用する場合の切捨て問題の回避
PL/SQLサブタイプの概要
サブタイプの定義
サブタイプの使用
サブタイプのデータ型の互換性
サブタイプの制約およびデフォルト値
PL/SQLデータ型の変換
明示的な変換
暗黙的な変換
暗黙的変換と明示的変換の選択
DATEの値
RAWおよびLONG RAWの値
CHARとVARCHAR2のデータ型の違い
文字値の代入
文字値の比較
文字値の挿入
文字値の選択

4  PL/SQLの制御構造の使用

PL/SQLの制御構造の概要
条件テスト: IF文およびCASE文
IF-THEN文の使用
IF-THEN-ELSE文の使用
IF-THEN-ELSEIF文の使用
CASE文の使用
検索CASE文
PL/SQL条件文のガイドライン
ループの反復の制御: LOOP文とEXIT文
LOOP文の使用
EXIT文の使用
EXIT-WHEN文の使用
PL/SQLループのラベル付け
WHILE-LOOP文の使用
FOR-LOOP文の使用
PL/SQLループの反復方法
ループの動的な範囲
ループ・カウンタ変数の有効範囲
FORループでのEXIT文の使用
順次制御: GOTO文とNULL文
GOTO文の使用
GOTO文の制限
NULL文の使用

5  PL/SQLのコレクションおよびレコードの使用

PL/SQLのコレクションおよびレコード
PL/SQLのコレクション
ネストした表
VARRAY
結合配列(索引付き表)
グローバリゼーション設定が結合配列のVARCHAR2キーに与える影響
PL/SQLレコード
使用するPL/SQLコレクション型の選択
ネストした表と結合配列の選択
ネストした表とVARRAYとの使い分け
コレクション型の定義とコレクション変数の宣言
PL/SQLのコレクション変数の宣言
コレクションの初期化および参照
コレクション要素の参照
コレクションの代入
コレクションの比較
マルチレベル・コレクションの使用
コレクション・メソッドの使用
コレクション要素の存在のチェック(EXISTSメソッド)
コレクション内の要素数のカウント(COUNTメソッド)
コレクションの最大サイズのチェック(LIMITメソッド)
最初または最後のコレクション要素の検索(FIRSTメソッドとLASTメソッド)
コレクションの各要素のループ(PRIORメソッドとNEXTメソッド)
コレクションのサイズの拡大(EXTENDメソッド)
コレクションのサイズの縮小(TRIMメソッド)
コレクション要素の削除(DELETEメソッド)
コレクション・パラメータへのメソッドの適用
コレクション例外の回避
レコードの定義と宣言
プロシージャのパラメータおよびファンクションの戻り値としてのレコードの使用
レコードへの値の代入
レコードの比較
PL/SQLレコードのデータベースへの挿入
PL/SQLレコード値を使用したデータベースの更新
レコードの挿入/更新に関する制約
レコードのコレクションへのデータの問合せ

6  PL/SQLでのSQL操作の実行

PL/SQLにおけるSQLサポートの概要
データ操作
トランザクション制御
SQLファンクション
SQL疑似列
SQL演算子
PL/SQLでのカーソルの管理
暗黙カーソル
暗黙カーソルの属性
暗黙カーソルの属性を使用する場合のガイドライン
明示カーソル
カーソルの宣言
カーソルのオープン
カーソルを使用したフェッチ
カーソルを使用したバルク・データのフェッチ
カーソルのクローズ
明示カーソルの属性
PL/SQLを使用したデータの問合せ
1行のみの選択: SELECT INTO文
複数行の選択: BULK COLLECT句
複数行のループ: カーソルFORループ
複雑な問合せの処理の実行: 明示カーソル
PL/SQLを使用したデータの問合せ: 暗黙カーソルのFORループ
PL/SQLを使用したデータの問合せ: 明示カーソルのFORループ
カーソルFORループ内の式の別名の定義
副問合せの使用
相関副問合せの使用
メンテナンス可能なPL/SQL問合せの作成
カーソル変数(REF CURSOR)の使用
カーソル変数(REF CURSOR)
変数を使用する理由
REF CURSOR型およびカーソル変数の宣言
パラメータとしてのカーソル変数の引渡し
カーソル変数の制御: OPEN-FOR、FETCHおよびCLOSE
カーソル変数のオープン
ホスト変数としてのカーソル変数の使用
カーソル変数からのフェッチ
カーソル変数のクローズ
ホスト・カーソル変数をPL/SQLに渡すときのネットワークの通信量の削減
カーソル変数でのエラーの回避
カーソル変数の制限
カーソル式の使用
カーソル式の制限
カーソル式の例
カーソル副問合せを使用したREF CURSORの構成
PL/SQLにおけるトランザクション処理の概要
PL/SQLでのCOMMITの使用
PL/SQLでのROLLBACKの使用
PL/SQLでのSAVEPOINTの使用
Oracleによる暗黙的なロールバックの実行方法
トランザクションの終了
SET TRANSACTIONを使用したトランザクション・プロパティの設定
SET TRANSACTIONの制限
デフォルトのロックの上書き
自律型トランザクションによる独立した作業単位の実行
自律型トランザクションのメリット
自律型トランザクションの定義
自律型トランザクションとネストしたトランザクションの比較
トランザクション・コンテキスト
トランザクションの可視性
自律型トランザクションの制御
自律型トリガーの使用
SQLからの自律型ファンクションのコール

7  システム固有の動的SQLを使用したSQL操作の実行

PL/SQLで動的SQLを使用する場合
PL/SQLでのEXECUTE IMMEDIATE文の使用
動的SQL文字列におけるバインド変数のパラメータ・モードの指定
PL/SQLでのバルク動的SQLの使用
動的SQLとバルクSQLの使用
バルク動的バインドの例
PL/SQLでの動的SQL使用のガイドライン
動的SQLを使用した動的問合せの構築
動的SQLでのセミコロンの使用または省略
バインド変数を使用した動的SQLのパフォーマンスの向上
パラメータとしてのスキーマ・オブジェクト名の引渡し
動的SQLでの重複するプレースホルダの使用
動的SQLでのカーソル属性の使用
動的SQLへのNULLの引渡し
動的SQLでのデータベース・リンクの使用
動的SQLでの実行者権限の使用
動的SQLでのRESTRICT_REFERENCESプラグマの使用
動的SQLでのデッドロックの回避
USING句の下位互換性
PL/SQLのレコードおよびコレクションでの動的SQLの使用

8  PL/SQLのサブプログラムの使用

サブプログラム
PL/SQLサブプログラムのメリット
PL/SQLプロシージャ
PL/SQLファンクション
RETURN文の使用
ネストしたPL/SQLサブプログラムの宣言
PL/SQLサブプログラムへのパラメータの引渡し
サブプログラムの実パラメータと仮パラメータ
サブプログラムのパラメータの位置表記法、名前表記法または混合表記法
サブプログラムのパラメータのモードの指定
INモードの使用
OUTモードの使用
IN OUTモードの使用
サブプログラムのパラメータのモードの概要
サブプログラムのパラメータのデフォルト値の使用
サブプログラム名のオーバーロード
数値型のオーバーロードのガイドライン
オーバーロードの制限
サブプログラムのコールの解決方法
オーバーロードと継承の相互作用
実行者権限と定義者権限の使用(AUTHID句)
実行者権限のメリット
AUTHID句によるサブプログラムの権限の指定
サブプログラム実行中の現行ユーザー
実行者権限サブプログラムでの外部参照の解決
実行者権限サブプログラムでのテンプレート・オブジェクトの必要性
実行者権限サブプログラムでのデフォルトの名前解決のオーバーライド
実行者権限サブプログラムに対する権限の付与
実行者権限サブプログラムに対する権限の付与: 例
実行者権限サブプログラムでのロールの使用
実行者権限サブプログラムでのビューおよびデータベース・トリガーの使用
実行者権限サブプログラムでのデータベース・リンクの使用
実行者権限サブプログラムでのオブジェクト型の使用
実行者権限のインスタンス・メソッドのコール
PL/SQLでの再帰の使用
再帰的サブプログラム
外部サブプログラムのコール
PL/SQLサブプログラムの副作用の制御
サブプログラムのパラメータのエイリアシングの理解

9  PL/SQLパッケージの使用

PL/SQLパッケージ
PL/SQLパッケージの内容
PL/SQLパッケージのメリット
パッケージ仕様部の理解
パッケージの内容の参照
制限
パッケージ本体の理解
パッケージ機能の例
パッケージのプライベート項目とパブリック項目
パッケージSTANDARDによるPL/SQL環境の定義
製品固有のパッケージの概要
DBMS_ALERTパッケージ
DBMS_OUTPUTパッケージ
DBMS_PIPEパッケージ
HTFパッケージおよびHTPパッケージ
UTL_FILEパッケージ
UTL_HTTPパッケージ
UTL_SMTPパッケージ
パッケージ作成のガイドライン
パッケージでのカーソル仕様部と本体の分離

10 PL/SQLエラーの処理

PL/SQLのランタイム・エラー処理の概要
PL/SQLエラーと例外の回避および処理のガイドライン
PL/SQL例外のメリット
事前定義のPL/SQL例外のまとめ
独自のPL/SQL例外の定義
PL/SQL例外の宣言
PL/SQL例外の有効範囲規則
PL/SQL例外と番号の関連付け: EXCEPTION_INITプラグマ
独自のエラー・メッセージの定義: RAISE_APPLICATION_ERRORプロシージャ
事前定義の例外の再宣言
PL/SQL例外の呼出し
RAISE文を使用した例外の呼出し
PL/SQL例外の伝播
PL/SQL例外の再呼出し
呼び出されたPL/SQL例外の処理
宣言の中で呼び出された例外
ハンドラの中で呼び出された例外の処理
例外ハンドラへの分岐と例外ハンドラからの分岐
エラー・コードとエラー・メッセージの取得: SQLCODEおよびSQLERRM
未処理例外の捕捉
PL/SQLエラーの処理のヒント
例外が呼び出された後に実行を続ける方法
トランザクションの再試行
ロケータ変数を使用した例外の位置の識別
PL/SQLのコンパイル時の警告の概要
PL/SQLの警告カテゴリ
PL/SQL警告メッセージの制御
DBMS_WARNINGパッケージの使用

11 PL/SQLアプリケーションのパフォーマンスのチューニング

PL/SQLコンパイル用の初期化パラメータ
PL/SQLでプログラムを最適化する方法
PL/SQLコードをチューニングする場合
PL/SQLのパフォーマンス問題を回避するためのガイドライン
PL/SQLコードでのCPUオーバーヘッドの回避
SQL文の最大限の効率化
ファンクション・コールの最大限の効率化
ループの最大限の効率化
組込み文字列ファンクションの使用
条件テストにおける最低コストの条件の先頭への配置
データ型変換の回数の最少化
整数の算術計算でのPLS_INTEGERの使用
浮動小数点の算術計算でのBINARY_FLOATおよびBINARY_DOUBLEの使用
PL/SQLコードでのメモリー・オーバーヘッドの回避
VARCHAR2変数宣言時の大きいサイズの指定
関連するサブプログラムのパッケージへのグループ化
共有メモリー・プールでのパッケージの確保
コンパイラの警告を回避するためのコードの改善
PL/SQLプログラムのプロファイルおよびトレース
プロファイラAPIの使用: DBMS_PROFILERパッケージ
トレースAPIの使用: DBMS_TRACEパッケージ
トレースの制御
バルクSQLによる、DML文および問合せのループ・オーバーヘッドの削減
FORALL文の使用
FORALLがロールバックに与える影響
%BULK_ROWCOUNT属性を持つFORALLによる影響を受ける行カウント
%BULK_EXCEPTIONS属性を持つFORALL例外の処理
BULK COLLECT句を使用した、問合せ結果のコレクションへの取出し
カーソルからのバルク・フェッチの例
LIMIT句を使用したバルク・フェッチ操作の対象行の制限
RETURNING INTO句を使用したコレクションへのDML結果の取出し
FORALLとBULK COLLECTの併用
バルク・バインドとホスト配列の併用
PL/SQLでの計算集中型プログラムの記述
EXECUTE IMMEDIATEおよびカーソル変数を使用した動的SQLのチューニング
NOCOPYコンパイラ・ヒントを使用したPL/SQLプロシージャ・コールのチューニング
NOCOPYの制限
システム固有の実行のためのPL/SQLコードのコンパイル
はじめに
PL/SQLのネイティブ・コンパイルを使用するかどうかの判断
PL/SQLのネイティブ・コンパイルの動作
依存性、無効化および再評価
Real Application ClustersおよびPL/SQLのネイティブ・コンパイル
ネイティブ・コンパイルの制限
spnc_commandsファイル
PL/SQLネイティブ・コンパイルの初期化パラメータの設定
PLSQL_NATIVE_LIBRARY_DIR初期化パラメータ
PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT初期化パラメータ
PLSQL_CODE_TYPE初期化パラメータ
PL/SQLのシステム固有のライブラリ用のサブディレクトリの設定
PL/SQLネイティブ・コンパイルの設定方法およびテスト方法
PL/SQLのネイティブ・コンパイルで使用する新しいデータベースの設定
PL/SQLネイティブ・コンパイルまたは解釈コンパイルで使用するデータベース全体の変更
パイプライン・ファンクションによる変換の設定
パイプライン・テーブル・ファンクションの概要
パイプライン・テーブル・ファンクションの記述
変換へのパイプライン・テーブル・ファンクションの使用
パイプライン・テーブル・ファンクションからの結果の戻し
PL/SQLテーブル・ファンクション間のデータのパイプライン
パイプライン・テーブル・ファンクションに対する複数コールの最適化
パイプライン・テーブル・ファンクションの結果からのフェッチ
カーソル変数によるデータの引渡し
パイプライン・テーブル・ファンクション内でのDML操作の実行
パイプライン・テーブル・ファンクションへのDML操作の実行
パイプライン・テーブル・ファンクションの例外処理

12 PL/SQLのオブジェクト型の使用

PL/SQLでのオブジェクトの宣言と初期化
PL/SQLブロックでのオブジェクトの宣言
PL/SQLによる未初期化オブジェクトの処理
PL/SQLを使用したオブジェクトの操作
ドット表記法を使用したオブジェクト属性へのアクセス
オブジェクトコンストラクタおよびメソッドのコール
オブジェクトの更新および削除
Ref修飾子を使用したオブジェクトの操作
PL/SQLコレクション型に相当するSQLの型の定義
SQLでの個々のコレクション要素の操作
SQLのオブジェクト型でのPL/SQLコレクションの使用
オブジェクトでの動的SQLの使用

13 PL/SQLの言語要素

代入文
AUTONOMOUS_TRANSACTIONプラグマ
ブロック宣言
CASE文
CLOSE文
コレクション定義
コレクション・メソッド
コメント
COMMIT文
定数と変数の宣言
カーソル属性
カーソル変数
カーソル宣言
DELETE文
EXCEPTION_INITプラグマ
例外定義
EXECUTE IMMEDIATE文
EXIT文
式定義
FETCH文
FORALL文
ファンクション宣言
GOTO文
IF文
INSERT文
リテラル宣言
LOCK TABLE文
LOOP文
MERGE文
NULL文
オブジェクト型宣言
OPEN文
OPEN-FOR文
パッケージ宣言
プロシージャ宣言
RAISE文
レコード定義
RESTRICT_REFERENCESプラグマ
RETURN文
RETURNING INTO句
ROLLBACK文
%ROWTYPE属性
SAVEPOINT文
SELECT INTO文
SERIALLY_REUSABLEプラグマ
SET TRANSACTION文
SQLカーソル
SQLCODEファンクション
SQLERRMファンクション
%TYPE属性
UPDATE文

A  PL/SQLのソース・コードの不明瞭化

不明瞭化
PL/SQLユニットの不明瞭化のヒント
不明瞭化の制限
wrapユーティリティの制限
DBMS_DDLのwrapファンクションの制限
wrapユーティリティを使用したPL/SQLコードの不明瞭化
PL/SQLのwrapユーティリティの入力ファイルと出力ファイル
wrapユーティリティの実行
DBMS_DDLサブプログラムを使用したPL/SQLコードの不明瞭化
DBMS_DDLのcreate_wrappedプロシージャの使用

B  PL/SQLでの識別子名の解決

名前解決
修飾名およびドット表記法の例
ドット表記法を使用して名前を指定する方法の追加例
PL/SQLとSQLの名前解決の相違点
取得の理解
内部取得
同一有効範囲の取得
外部取得
DML文の内部取得の回避
オブジェクト属性およびメソッドへの参照の修飾
属性およびメソッドへの参照
行の式への参照

C  PL/SQLのプログラム上の制限

D  PL/SQLの予約語およびキーワード

索引


次へ
Oracle
Copyright © 2005 Oracle Corporation.

All Rights Reserved.
索引
索引