Oracle®開発者用 データベースの 互換性
リファレンス・ガイド
EnterpriseDB®Corporation
Copyright©2007 - 201 7 EnterpriseDB Corporation。全著作権所有。
EnterpriseDB Corporation、34 Crosby Drive、Suite 100、Bedford、MA 01730、USA
T +1 781 357 3390 F +1 978 589 5701 E info@enterprisedb.com www .enterprisedb.com
オラクルのデータベース互換性とは、アプリケーションがOracle環境だけでなく、 EDB Postgres Advanced Server(Advanced Server)環境でも実行されることを意味します。
このガイドでは、Advanced Serverの互換性機能に関する参考資料を提供しています。
・ SQL言語構文サポート
・ 互換性のあるデータ型
・ SQLコマンド
・ カタログビュー
・ システムカタログテーブル
Advanced Server でOracleデータベースと互換性のあるアプリケーションを開発するには、アプリケーションの構築にどの機能が使用されているかを特に注意する必要があります。たとえば、 互換性のあるアプリケーションを開発するとは、
・ Oracleデータベースと互換性のあるアプリケーションのデータベース表を定義するデータ型
・ Oracle SQLと互換性のある SQL 文
・ Oracleデータベースと互換性のあるSQL文およびプロシージャー・ロジックで使用するためのシステムおよび組み込み関数
・ ストアドプロシージャ 、関数、トリガ、およびパッケージのデータベースサーバー側アプリケーションロジックを作成するための ストアドプロシージャ言語 ( SPL )
・ Oracleのデータ・ディクショナリと互換性のあるシステム・カタログ・ビュー
Advanced Serverの互換性機能と拡張機能の詳細については、Advanced Serverのドキュメントの完全なライブラリを参照してください。
http://www.enterprisedb.com/products-services-training/products/documentation
Advanced Server 10を作成するために 、 Advanced Server 9.6に 以下のOracle機能のデータベース互換性が追加されました 。
・ Advanced Serverは、( TYPE IS RECORD ステートメントで 宣言された)ユーザー定義のレコード・タイプ内で、そのデータ・タイプとしてフィールドによって参照 される複合タイプ( CREATE TYPE AS コマンド によって作成された )の 使用をサポートする ようになりました 。コンポジットタイプを含むこのレコードタイプは、パッケージ仕様書またはパッケージ本体でのみ宣言できます。複合型はOracleデータベースと互換性がありません。ただし、コンポジット型は、(パッケージを除いて)レコード型の一部でない限り、一般的にすべてのSPLプログラム(関数、プロシージャ、トリガ、パッケージなど)内で使用できます。複合型の詳細は、 2.3.36 項を参照してください 。
このマニュアルでは、さまざまなコマンド、文、プログラム、例などの意味と使用法を明確にするために、特定の表記規則が使用されています。このセクションでは、これらの規則の概要を説明します。
以下の説明では、 用語 は、言語キーワード、ユーザ供給値、リテラルなどの任意の単語または単語群を指す。用語の正確な意味は、それが使用される文脈に依存する。
・ イタリック体のフォントで は、通常、最初に定義された文章に新しい用語が導入されています。
· Fixed-width (mono-spaced) font は、 SQL コマンド、例で使用されている特定のテーブルとカラム名、プログラミング言語キーワード など、文字通り与えなければならない用語に使用され ます 。たとえば、 SELECT * FROM emp;
・ Italic fixed-width font は、ユーザーが実際の使用で値を置き換える必要がある用語に使用されます。たとえば、 DELETE FROM table_name ;
・ |パイプの両側の用語の間の選択を示します。垂直パイプは、角括弧(オプションの選択肢)または中括弧(1つの必須選択肢)内の2つ以上の代替用語を区切るために使用されます。
・ 角括弧[]は、囲まれた用語の1つまたはいずれかが置換されていてもよいことを示す。たとえば、 [ a | b ] 、「 a 」または「 b 」のいずれ かを 選択するか、 またはどちらも 選択しないことを意味します 。
・ 中括弧{}は、囲まれた選択肢のうちの1つを指定する必要があることを示します。たとえば、 { a | b } 、 " a "または " b "の うちの1つを 指定する必要があることを意味します。
・ 楕円形...とは、進行中の用語を繰り返すことができることを意味します。たとえば、 [ a | b ] ... は、あなたがシーケンス「 baaba 」を 持っているかもしれないことを意味します 。
以下のセクションでは、 Advanced Serverのサブセットについて説明します。 Oracleデータベースと互換性のあるSQL言語。次のSQL構文、コマンド、データ型、および関数は、EDB Postgres Advanced ServerとOracleの両方で機能します 。
Advanced Serverのドキュメント・セットには、拡張機能(Oracleとのデータベース互換性を提供しない機能、またはOracleスタイルのアプリケーションをサポートしない機能)の構文とコマンドが含まれています。
このセクションは、次のセクションで構成されています。
・ Advanced Serverの SQL構文と言語要素の一般的な説明
・ データ型
・ SQLコマンドの要約
・ 組み込み関数
このセクションでは、 SQLの一般的な構文について説明します 。これは、データを定義および変更するためにSQLコマンドがどのように適用されるかについての詳細を含む次の章を理解するための基礎を形成します。
SQL 入力は一連のコマンドで構成されています。 コマンドは 、 トークン の配列からなる 、セミコロンによって終了 されます (;)。入力ストリームの終わりもコマンドを終了します。有効なトークンは、特定のコマンドの構文に依存します。
トークンは、 キーワード 、 識別子 、 引用符で囲まれた識別子 、 リテラル ( 定数 )、または特殊文字シンボルです。トークンは通常、 空白 (スペース、タブ、 改行 )で 区切られ ます が、あいまいさがない場合(通常、特殊文字が他のトークンタイプに隣接している場合のみです)にする必要はありません。
さらに、 SQL入力 で コメント が発生する可能性があります 。それらはトークンではなく、空白と事実上同等です。
たとえば、次の構文は有効なSQL入力です。
SELECT * FROM MY_TABLE;
UPDATE MY_TABLE SET A = 5;
INSERT INTO MY_TABLE VALUES (3, 'hi there');
これは一連の3つのコマンドで、1行に1つです(これは必須ではありませんが、複数のコマンドを1つの行に置くことができ、コマンドは通常行間に分割できます)。
SQL構文は、どのトークンがコマンドを識別し、オペランドまたはパラメータであるかに関してあまり一貫性がない。最初の数個のトークンは一般にコマンド名です。したがって、上記の例では、通常、 SELECT 、 UPDATE 、および INSERT コマンドについて説明します。しかし、例えば、 UPDATE コマンドは常に SET トークンを特定の位置に表示する 必要があり ます。この特定の INSERT バリエーションに は、 VALUES トークン が必要 です。各コマンドの正確な構文規則については、 2.3 節で説明し ます。
上の例の SELECT 、 UPDATE 、 VALUES などのトークン は キーワードの 例 です。つまり、 SQL言語で固定された意味を持つ単語です。トークン MY_TABLE と A は 識別子の 例です 。それらは、使用されているコマンドに応じて、テーブル、列、または他のデータベースオブジェクトの名前を識別します。したがって、単に「 名前 」 と呼ばれることもあり ます。キーワードと識別子は同じ 字句構造を 持ちます。つまり 、言語を知らなくてもトークンが識別子かキーワードかどうかを知ることはできません。
SQLの 識別子とキーワードは、文字( az または AZ )で 始まる必要があります 。識別子またはキーワードの後続の文字は、文字、アンダースコア、数字( 0-9 )、ドル記号( $ )、または数字記号( # )です。
識別子とキーワード名は大文字と小文字を区別しません。したがって、
UPDATE MY_TABLE SET A = 5;
等価的に以下のように書くことができます:
uPDaTE my_TabLE SeT a = 5;
大抵の場合、大文字で大文字を、大文字では小文字で、
UPDATE my_table SET a = 5;
第2の種類の識別子: 区切られた識別子 または 引用された識別子 。二重引用符(に任意の文字の並びを囲むことによって形成される " )。区切り識別子は常に識別子、キーワードではありません。だから "select" という名前の列やテーブルを参照するために使用することができ "select" 、引用符で囲まれていないselectはキーワードとして扱われるため、テーブル名や列名が必要な場所で使用すると解析エラーが発生します。
UPDATE "my_table" SET "a" = 5;
引用符付きの識別子には、数字コード0の文字を除く任意の文字を含めることができます。
二重引用符を含めるには、二重引用符を二重に使用します。これにより、他の方法では使用できないような表や列の名前(スペースやアンパサンドを含むものなど)を作成することができます。長さの制限は依然として適用されます。
識別子をクォートすると、大文字と小文字が区別されますが、引用されていない名前は常に小文字に変換されます。たとえば、識別子 FOO 、 foo 、および "foo" は、 Advanced Serverでは同じと見なされますが、 "Foo" と "FOO" はこれらの3つのものと異なります。引用符のない名前を小文字に変換することは、Oracleデータベースと互換性がありません。 Oracleの構文では、引用符で囲まれていない名前は大文字に変換されます。たとえば、 foo は "foo" "FOO" なく "foo" "FOO" 相当し "FOO" 。ポータブルアプリケーションを作成する場合は、常に特定の名前を引用するか、引用しないことをお勧めします。
Advanced Serverの暗黙的に型指定された定数の種類は、 文字列 と 数値 です。明示的な型で定数を指定することもできます。これにより、より正確な表現とシステムによる効率的な処理が可能になります。これらの選択肢については、次のサブセクションで説明します。
SQL の 文字列定数 は、一重引用符( ' )で 囲まれた文字の任意のシーケンスです( たとえば、 'This is a string' 。文字列定数の中に一重引用符を含めるには、二つの隣接する一重引用符(例えば、 'Dianne''s horse' )を書いて ください。これは二重引用符( ")と同じではないことに注意してください。
digits
digits .[ digits ][e[+-] digits ]
[ digits ]. digits [e[+-] digits ]
digits e[+-] digits
ここで、 digits 一つ以上の桁(0〜9)です。少なくとも1桁は、小数点が使用されている場合は、小数点の前または後にする必要があります。指数マーカー( e )が存在する場合は、 少なくとも1桁は指数マーカーに従わなければなりません 。定数にはスペースやその他の文字が埋め込まれていないことがあります。先頭のプラス記号またはマイナス記号は、実際には定数の一部とはみなされないことに注意してください。定数に適用される演算子です。
有効な数値定数の例をいくつか示します。
42
3.5
4.
.001
5e2
1.925e-3
小数点も指数も含まない数値定数は 、その値が INTEGER 型 (32ビット)に 収まる場合 は、最初は INTEGER 型であると推定されます 。そうでない場合は、タイプであると推定される BIGINT その値が型に収まる場合に BIGINT (64ビット)。それ以外の場合は NUMBER 型になります 。小数点および/または指数を含む定数は、常に最初は NUMBER 型と NUMBER ます。
最初に割り当てられた数値定数のデータ型は、型解決アルゴリズムの出発点にすぎません。ほとんどの場合、定数はコンテキストに応じて自動的に最適な型に強制的に変換されます。必要に応じて、次のセクションで説明するように、数値をキャストして特定のデータ型として解釈させることができます。
CAST(' string ' AS type )
文字列定数のテキストは、typeと呼ばれる type 入力変換ルーチンに渡されます 。結果は示された型の定数です。明示的な型キャストは、定数が(たとえば、それが直接的に表の列に代入される)型でなければならない場合、省略されます。この場合、自動的に強制的に強制されます。
CAST は、任意の式の実行時の型変換を指定するためにも使用できます。
コメントは二重ダッシュで始まり、行の終わりまで続く文字の任意のシーケンスです。例:
-- This is a standard SQL comment
あるいは、 Cスタイルのブロックコメントを使用することもできます。
/* multiline comment
* block
*/
ここで、コメントは /* 始まり 、 */ 一致する出現にまで及ぶ 。
表 2 - 1 データ型
Name | Alias | Description |
BLOB | LONG RAW, RAW( n ), BYTEA | バイナリデータ |
BOOLEAN |
| 論理ブール値(true / false) |
CHAR [ ( n ) ] | CHARACTER [ ( n ) ] | n文字の固定長文字列 |
CLOB | LONG, LONG VARCHAR | 長い文字列 |
DATE | TIMESTAMP(0) | 日付と時刻を2番目の時刻に |
DOUBLE PRECISION | FLOAT, FLOAT(25) – FLOAT(53) | 倍精度浮動小数点数 |
INTEGER | INT, BINARY_INTEGER, PLS_INTEGER | 符号付き4バイト整数 |
NUMBER | DEC, DECIMAL, NUMERIC | 小数点以下の桁の正確な数値 |
NUMBER( p [, s ]) | DEC(p [, s ]), DECIMAL( p [, s ]), NUMERIC( p [, s ]) | 最大精度、 p 、およびオプションのスケール sの 正確な数値 |
REAL | FLOAT(1) – FLOAT(24) | 単精度浮動小数点数 |
TIMESTAMP [ ( p ) ] |
| オプションの分数秒精度 pの 日付と時刻 |
TIMESTAMP [ ( p ) ] WITH TIME ZONE |
| オプションの分数秒精度 p およびタイムゾーン 付きの日付と時刻 |
VARCHAR2( n ) | CHAR VARYING( n ), CHARACTER VARYING( n ), VARCHAR( n ) | 最大長が n 文字の 可変長文字列 |
XMLTYPE |
| XMLデータ |
数値型は、4バイトの整数、4バイトと8バイトの浮動小数点数、および固定小数点の小数で構成されます。次の表に、使用可能なタイプを示します。
表 2 - 2 数値型
Name | Storage Size | Description | Range |
BINARY_INTEGER | 4バイト | INTEGER 符号付き整数、別名 | -2,147,483,648〜+ 2,147,483,647 |
DOUBLE PRECISION | 8バイト | 可変精度、不正確 | 小数点以下15桁 数字の精度 |
INTEGER | 4バイト | 整数のための通常の選択 | -2,147,483,648〜+ 2,147,483,647 |
NUMBER | 変数 | ユーザー指定の精度、正確 | 最大1000桁の精度 |
NUMBER( p [, s ] ) | 変数 | 最大精度、 p 、およびオプションのスケール sの 正確な数値 | 最大1000桁の精度 |
PLS_INTEGER | 4バイト | INTEGER 符号付き整数、別名 | -2,147,483,648〜+ 2,147,483,647 |
REAL | 4バイト | 可変精度、不正確 | 10進数の6桁の精度 |
ROWID | 8バイト | 符号付き8ビット整数。 | -9223372036854775808〜9223372036854775807 |
次のセクションでは、型の詳細について説明します。
タイプ INTEGER 、-2,147,483,648と+2,147,483,647の値の間に(小数成分なしの)整数を格納します。許容範囲外の値を格納しようとすると、エラーが発生します。
ROWID 型の 列は、 レコードの物理アドレスを記述する固定長バイナリ・データを保持します。 ROWID は、 0と4,294,967,295の値の間に(小数成分なしの)整数を格納 する、符号なしの4バイトの INTEGER です。許容範囲外の値を格納しようとすると、エラーが発生します。
タイプ NUMBER 、実質的に無制限の精度の桁数を格納し、正確に計算を実行できます。金額や正確さが必要な場合は他の数量を保管する場合に特にお勧めします。ただし、 NUMBER 型は、次のセクションで説明する浮動小数点型に比べて非常に遅いです。
以下では、これらの用語を使用します NUMBER の 位取り は、 小数点以下の小数点以下の小数点以下の桁数です。 NUMBER の 精度 は 、整数の有効数字の合計数、つまり小数点の両側の桁数です。したがって、23.5141の数値は6の精度と4のスケールを持ちます。整数は0のスケールを持つとみなすことができます。
NUMBER タイプ の精度と位取りの両方を 設定できます。 NUMBER 型の列を宣言するには 、構文を使用します
NUMBER( precision , scale )
精度は正でなければならず、スケールはゼロまたは正でなければなりません。あるいは、
NUMBER( precision )
0指定の NUMBER のスケールを選択し、 任意の精度または位取りを持たない列は、任意の精度および位取りの数値を精度の実装限界まで格納できる列を作成します。このような列は入力値を特定のスケールに強制しません が、宣言されたスケールの NUMBER 列は入力値をそのスケールに強制します。 ( SQL 標準では、デフォルトのスケール0、つまり整数精度への強制が必要です。移植性を最大限に高めるには、精度と位取りを明示的に指定することをお勧めします)。
値の精度または位取りが列の宣言された精度または位取りより大きい場合、システムは値を丸めようとします。宣言された制限を満たすように値を四捨五入することができない場合は、エラーが発生します。
データ型 REAL と DOUBLE PRECISION は、 不正確で可変長の数値型です。実際には、これらの型は通常 、基本となるプロセッサ、オペレーティングシステム、およびコンパイラがサポートする範囲で、バイナリ浮動小数点演算(それぞれ単精度および倍精度) の IEEE 標準754の 実装です 。
不正確とは、一部の値を内部形式に正確に変換できず、値を保存して印刷する際にわずかな不一致が生じるように、近似値として格納されることを意味します。これらのエラーを管理し、計算をどのように伝播させるかは、数学とコンピュータサイエンス全体の主題です。以下の点を除き、ここではこれ以上説明しません。
正確な保管と計算(金額など)が必要な場合は、 代わりに NUMBER タイプを 使用してください 。
これらの型を持つ複雑な計算を何か重要なものにする場合は、特に境界ケース(無限大、アンダーフロー)の特定の動作に頼っている場合は、実装を慎重に評価する必要があります。
平等のために2つの浮動小数点値を比較すると、期待どおりに動作する場合と動作しない場合があります。
ほとんどのプラットフォームでは、 REAL DOUBLE PRECISION タイプは通常、1E-307〜1E + 308の範囲で、少なくとも15桁の精度を持ちます。値が大きすぎたり小さすぎたりすると、エラーが発生します。入力番号の精度が高すぎる場合は、丸めが行われることがあります。 0に近い数値は、ゼロとは区別されて表現できないため、アンダーフローエラーが発生します。
Advanced Server は、 不正確な数値型を指定するため の SQL 標準表記 FLOAT および FLOAT( p ) もサポートしてい ます 。ここで、 p は最小許容精度を2進数で指定します。 Advanced Server は 、 REAL タイプ を選択する場合 は FLOAT(1) から FLOAT(24) を、 DOUBLE PRECISION を選択する場合は FLOAT(25) から FLOAT(53) を 受け入れ ます 。 許容範囲外 の p 値は エラーを引き起こします。 精度が指定されていない FLOAT は、 DOUBLE PRECISION を意味し ます。
次の表 に、 Advanced Serverで使用可能な汎用文字の種類を示します 。
表 2 - 3の 文字タイプ
Name | Description |
CHAR[( n )] | 固定長文字列、 n 指定されたサイズにブランク埋め |
CLOB | 1 GBまでの可変長 |
LONG | 可変長無限の長さ。 |
NVARCHAR( n ) | 可変長の国別文字列。制限付き。 |
NVARCHAR2( n ) | 可変長の国別文字列。制限付き。 |
STRING | VARCHAR2 別名 。 |
VARCHAR( n ) | 制限付きの可変長文字列(推奨されていませんが、互換性のためにサポートされています) |
VARCHAR2( n ) | 可変長文字列(制限あり) |
ここで、 n は正の整数です。これらの型は 長さ が n 文字までの文字列を格納できます 。 余分な文字がすべて空白でない限り、 n の長さを超える値を代入 するとエラーになります。この場合、文字列は最大長に切り捨てられます。
CHAR
値を指定しない場合 n 、 n はデフォルトで 1 なります 。割り当てられる文字列が n よりも短い場合 、 CHAR 型の値は 指定された幅( n )に スペースが埋め込ま れ、 そのように格納されて表示されます。
パディングスペースは、意味的に重要でないものとして扱われます。つまり、末尾のスペースは、 CHAR 型の2つの値を比較するときは無視 され、 CHAR 値を他の文字列型のいずれか に変換するときには削除され ます。
オーバー長さの値を CHAR( n ) 型に 明示的にキャストすると、 CHAR( n ) SQL標準で指定されているように)エラーを発生させずに 値が n 文字に 切り捨てられ ます 。
VARCHAR, VARCHAR2, NVARCHAR and NVARCHAR2
割り当てられる文字列が n よりも短い場合 、 VARCHAR 、 VARCHAR2 、 NVARCHAR および NVARCHAR2 型の値は 、 パディングなしで短い文字列を格納します。
末尾のスペース は VARCHAR 値で 意味的に重要で あることに注意してください 。
VARCHAR 型に 明示的に値をキャストすると 、 SQL標準で指定されているように、エラーを発生させることなく 長さの値が n 文字に 切り捨てられ ます 。
CLOB
CLOB 型 で大きな文字列を格納でき ます。 長さの制限が指定されていないことを除いて、 CLOB は VARCHAR2 と意味的に同等 です。通常、 最大文字列長がわからない場合は 、 CLOB 型 を使用する必要 があります。
CLOB 型に 格納できる最長文字列 は約1 GBです。
これらのタイプのデータの格納要件は、文字列が127バイト未満の場合は1バイト、文字列が127バイト以上の場合は4バイトです。 CHAR, の場合 、パディングにも格納が必要です。長い文字列はシステムによって自動的に圧縮されるため、ディスク上の物理的な要件はそれより少なくなる可能性があります。長い値は、短い列値への高速アクセスを妨げないように、バックグラウンド・テーブルに格納されます。
データベースの文字セットは、テキスト値を格納するために使用される文字セットを決定します。
表 2から 4 バイナリラージオブジェクト
Name | Storage Size | Description |
BINARY | バイナリ文字列の長さ。 | 長さが1〜8300の固定長バイナリ文字列。 |
BLOB | 実際のバイナリ文字列には、バイナリ文字列が127バイト未満の場合は1バイト、バイナリ文字列が127バイト以上の場合は4バイトが加算されます。 | 可変長バイナリ文字列 |
VARBINARY | バイナリ文字列の長さ | EEN 1及び8300 betw長さ 可変長のバイナリ文字列 。 |
バイナリ文字列は、オクテット(またはバイト)のシーケンスです。バイナリ文字列は、2つの特性によって文字列と区別されます。まず、バイナリ文字列は、値ゼロのオクテットと他の "印刷不可能" オクテット(32〜126の範囲外のオクテットとして定義)を 格納することを特に許可し ます。第2に、バイナリ文字列の操作は実際のバイトを処理しますが、文字列のエンコーディングと処理はロケール設定に依存します。
次の日付/時刻タイプの説明では 、表が作成または変更されるたびに 、構成パラメーター edb_redwood_date が true 設定されている ことを前提としています 。
Advanced Server は、次の表に示す日付/時刻タイプをサポートしています。
表 2から 5 日付/時刻データ型
Name | Storage Size | Description | Low Value | High Value | Resolution |
DATE | 8バイト | 日時 | 紀元前4713年 | 5874897 AD | 1秒 |
INTERVAL DAY TO SECOND [( p )] | 12バイト | 期間 | -17800万年 | 17800万年 | 1マイクロ秒/ 14桁 |
INTERVAL YEAR TO MONTH | 12バイト | 期間 | -17800万年 | 17800万年 | 1マイクロ秒/ 14桁 |
TIMESTAMP [( p )] | 8バイト | 日時 | 紀元前4713年 | 5874897 AD | 1マイクロ秒 |
TIMESTAMP [( p )] WITH TIME ZONE | 8バイト | 日時とタイムゾーン | 紀元前4713年 | 5874897 AD | 1マイクロ秒 |
場合 DATE データ定義言語の列のデータ・タイプとして表示され(DDL)コマンドは、 CREATE TABLE 、または ALTER TABLE 、それに変換され TIMESTAMP(0) テーブル定義がデータベースに格納されている時。したがって、時間成分も日付とともに列に格納されます。
場合 DATE SPL宣言セクション内の変数のデータ・タイプ、またはSPL手順で仮パラメータのデータ・タイプまたはSPL機能、またはSPL関数の戻り型として表示され、それは常にに変換され TIMESTAMP(0) 、したがって存在する場合には時間成分を扱うことができる。
TIMESTAMP は 、秒フィールドに保持される小数点以下桁数を指定 するオプションの精度値 p を 受け入れ ます。 p の許容範囲は 0〜6で、デフォルトは6です。
場合 TIMESTAMP 値は、倍精度浮動小数点数(現在のデフォルト)として保存され、精度の効果的な限界は6未満であってもよい TIMESTAMP 値は、真夜中2000-01-01前または後秒として格納されます。マイクロ秒の精度は、2000年1月1日から数年以内の日付で達成されますが、日付の精度が低下します。場合 TIMESTAMP 値が8バイト整数(コンパイル時オプション)として格納され、マイクロ秒の精度は、値の全範囲にわたって利用可能です。ただし、8バイト整数のタイムスタンプの日付範囲は上記のものよりも限られています。紀元前4713年から294276年までです。
TIMESTAMP ( p ) WITH TIME ZONE は TIMESTAMP 似てい TIMESTAMP ( p ) が含まれますが、タイムゾーンも含まれます。
INTERVAL 値は期間を指定します。値 INTERVAL 型は、データの値を記述するフィールドで構成されています。次の表は、 INTERVAL 型で 許可されるフィールドの一覧 です。
表 2 - 6の 間隔タイプ
Field Name | INTERVAL Values Allowed |
YEAR | 整数値(正または負) |
MONTH | 0〜11 |
DAY | 整数値(正または負) |
HOUR | 0〜23 |
MINUTE | 0〜59 |
SECOND | 0〜59.9( p )ここで、9( p )は小数秒の精度です |
フィールドは、 YEARS から MONTHS 、 DAYS から HOURS 、 MINUTES 、 SECONDS 順に降順で表示する必要があります 。
Advanced Serverは 、Oracleデータベースと互換性のある 2つの INTERVAL タイプを サポートしてい ます。
Advanced Serverでサポートされる最初のバリエーションは、 INTERVAL DAY TO SECOND [( p )]. INTERVAL DAY TO SECOND [( p )] は、時間間隔を日、時間、分、秒で格納します。
p は second フィールドの 精度を指定し ます。
Advanced Serverは次の値を解釈します。
INTERVAL '1 2:34:5.678' DAY TO SECOND(3)
1日、2時間、34分、5秒、および678分の1秒のように表示されます。
Advanced Serverは次の値を解釈します。
font-style:normal '> INTERVAL' 1 23時の日々
1日23時間とします。
Advanced Serverは次の値を解釈します。
INTERVAL '2:34' HOUR TO MINUTE
2時間34分とする。
Advanced Serverは次の値を解釈します。
INTERVAL '2:34:56.129' HOUR TO SECOND(2)
2時間34分56秒13000分の1秒とします。小数第2は、指定された精度のために13に切り上げられることに注意してください。
Oracleデータベースと互換性のあるAdvanced Serverでサポートされている2番目のバリエーションは、 INTERVAL YEAR TO MONTH. このバリエーションは、時間間隔を年数および月単位で格納します。
Advanced Serverは次の値を解釈します。
INTERVAL '12-3' YEAR TO MONTH
12年3ヶ月として。
Advanced Serverは次の値を解釈します。
INTERVAL '456' YEAR(2)
12年3ヶ月として。
Advanced Serverは次の値を解釈します。
INTERVAL '300' MONTH
25年として
日付と時刻の入力は、ISO 8601の SQL 互換形式、 Oracleの デフォルトのdd-MON-yy形式、その他の形式 で受け入れられ ます。ただし、年、月、日のいずれのコンポーネントがあいまいでないかは不明です。ただし、 あいまいさを避けるため に、 TO_DATE 関数の 使用を 強くお勧めします。
任意の日付または時刻のリテラル入力は、テキスト文字列のように単一引用符で囲む必要があります。次のSQL標準構文も使用できます。
type ' value '
type は DATE または TIMESTAMP いずれか です。
value は日付/時刻テキスト文字列です。
次の表は、日付の可能な入力形式の一部を示しています。これらはすべて1999年1月8日に相当します。
表 2から 7 日付入力
Example |
January 8, 1999 |
1999-01-08 |
1999-Jan-08 |
Jan-08-1999 |
08-Jan-1999 |
08-Jan-99 |
Jan-08-99 |
19990108 |
990108 |
日付値は、 DATE または TIMESTAMP 列または変数に 割り当てることができ ます。日付値に時間値が付加されていない場合、時、分、および秒フィールドはゼロに設定されます。
次の表に、日付またはタイムスタンプの時間コンポーネントのいくつかの例を示します。
表 2 - 8 時間入力
Example | Description |
04:05:06.789 | ISO 8601 |
04:05:06 | ISO 8601 |
04:05 | ISO 8601 |
040506 | ISO 8601 |
04:05 AM | 04:05と同じ。 AMは価値に影響しません |
04:05 PM | 16:05と同じ。入力時は<= 12 |
タイムスタンプの有効な入力は、日付と時刻の連結で構成されます。タイムスタンプの日付部分は、 表2-7に 示すいずれかの例に従ってフォーマットすることができます 。タイムスタンプの時間部分は、 表2-8に 示すいずれかの例に従ってフォーマットすることができます 。
次は、 Oracleのデフォルト形式に従うタイムスタンプの例です。
08-JAN-99 04:05:06
以下は、 ISO 8601規格に 従ったタイムスタンプの例です 。
1999-01-08 04:05:06
日付/時刻タイプのデフォルトの出力形式は、 Oracleデータベースと互換性の ある Redwood日付スタイル と呼ばれる(dd-MON-yy) か、ISO 8601フォーマットと呼ばれる(yyyy-mm-dd) データベース へ のアプリケーションインターフェイス上で実行さ れ ます。 SQL Interactive などのJDBCを使用するアプリケーションでは 、常に日付がISO 8601形式で表示されます。 PSQL などの他のアプリケーション では、Redwoodフォームで日付が表示されます。
次の表は、RedwoodとISO 8601の2つのスタイルの出力形式の例を示しています。
表 2から 9 日付/時刻出力スタイル
Description | Example |
レッドウッドスタイル | 31-DEC-05 07:37:16 |
ISO 8601 / SQL標準 | 1997-12-17 07:37:16 |
Advanced Server では、すべての日付/時刻の計算にユリウス日付が使用されます。ユリウス暦の日付は、年の長さが365.2425日であるという前提に基づいて、4713年以降の任意の日付を正しく予測または計算します。
Advanced Server は、標準 SQL タイプ BOOLEAN 提供し ます 。 BOOLEAN は、 TRUE または FALSE 2つの状態のうちの1つを持つことができ FALSE 。第3の状態 UNKNOWN は、 SQL NULL 値。
表 2 - 10 ブール型
Name | Storage Size | Description |
BOOLEAN | 1バイト | 論理ブール値(true / false) |
真の状態を表す有効なリテラル値は TRUE です。偽の状態を表す有効なリテラルは FALSE です。
XMLTYPE データ型は、XMLデータを格納するために使用されます。 XMLデータを文字フィールドに格納することの利点は、整形式の入力値をチェックして、タイプセーフな操作を実行するためのサポート関数があることです。
XMLタイプでは、XML標準で定義されているように整形式の「ドキュメント」と、本番 XMLDecl? content 定義されている「コンテンツ」フラグメントを XMLDecl? content XML標準の XMLDecl? content 大雑把に言えば、これは、コンテンツフラグメントが複数のトップレベル要素または文字ノードを持つことができることを意味します。
注意: Oracleでは、 XMLTYPE 列の コンテンツ・フラグメントの格納はサポートされていません 。
次の例は、行を作成し、 XMLTYPE 列。
CREATE TABLE books (
content XMLTYPE
);
INSERT INTO books VALUES (XMLPARSE (DOCUMENT '<?xml version="1.0"?><book><title>Manual</title><chapter>...</chapter></book>'));
SELECT * FROM books;
content
----------------------------------------------------------
<book><title>Manual</title><chapter>...</chapter></book>
(1 row)
この節では、 Advanced ServerでサポートされているOracleデータベースと互換性のあるSQLコマンドの概要を示します 。このセクションのSQLコマンドは、 OracleデータベースとAdvanced Serverデータベースの両方で動作します。
次の点に注意してください。
・ Advanced Server は、ここに記載されていない他のコマンドもサポートしています。これらのコマンドには、 Oracleと同等の機能がないか、 Oracle SQLコマンドと同様の機能を提供する可能性がありますが、構文は異なります。
・ このセクションのSQLコマンドは、各コマンドで使用できる完全な構文、オプション、および機能を必ずしも表すものではありません。ほとんどの場合、 Oracleデータベースと互換性のない構文、オプション、および機能は、コマンドの説明および構文から除外されています。
・ Advanced Serverのドキュメント・セットには、 Oracleデータベースと互換性のないコマンド機能が記載されています 。
名
ALTER INDEX - 既存の索引を変更します。
Advanced Serverでは、 ALTER INDEX コマンドは、Oracleデータベースと互換性があります。インデックスの名前を変更するには、最初のバリエーションを使用します。
ALTER INDEX name RENAME TO new_name
ALTER 2番目のバリエーションを使用する INDEX を再構築するための INDEX コマンド:
ALTER INDEX name REBUILD
説明
ALTER INDEX は、既存の索引の定義を変更します。 RENAME 句は、インデックスの名前を変更します。 REBUILD 句は、インデックスのテーブルに基づいて更新されたバージョンで古いインデックスのコピーを置き換え、インデックスを再構築します。
REBUILD 句はPostgreSQLの呼び出し REINDEX コマンドを、 REBUILD 句の 使用の 詳細については、PostgreSQLのコアドキュメントを参照してください。
https://www.postgresql.org/docs/10/static/sql-reindex.html
ALTER INDEX は、格納されたデータには影響しません。
name
既存の索引の名前(おそらくスキーマ修飾名)。
new_name
インデックスの新しい名前。
例
インデックスの名前を変更するには style = 'font-size:11.0pt'> name_idx から empname_idx :
ALTER INDEX name_idx RENAME TO empname_idx;
empname_idx という名前のインデックスを再構築するには :
ALTER INDEX empname_idx REBUILD;
関連項目
名
ALTER PROCEDURE
シノプシス
ALTER PROCEDURE procedure _ name options [RESTRICT]
説明
ALTER 使用する プロシージャーが SECURITY ことを指定する PROCEDURE ステートメント INVOKER または SECURITY DEFINER 。
パラメーター
procedure_name
procedure_name は、ストアド・プロシージャの名前(スキーマ修飾名)を指定します。
options 多分:
[EXTERNAL] SECURITY DEFINER
SECURITY 指定する DEFINER を使用して、プロシージャを作成したユーザーの権限でプロシージャを実行するようサーバーに指示します。 EXTERNAL キーワードは、互換性のために受け入れたが、無視されます。
[EXTERNAL] SECURITY INVOKER
SECURITY 指定する INVOKER を使用して、プロシージャを呼び出すユーザーの権限でプロシージャを実行するようサーバーに指示します。 EXTERNAL キーワードは、互換性のために受け入れたが、無視されます。
RESTRICT キーワードは、互換性のために受け入れたが、無視されます。
例
次のコマンドは、 update _ balance プロシージャを、プロシージャを呼び出すユーザーの権限で実行するように 指定し ます。
ALTER PROCEDURE update_balance SECURITY INVOKER;
名
ALTER PROFILE - 既存のプロファイルを変更する
シノプシス
ALTER PROFILE profile_name RENAME TO new_name ;
ALTER PROFILE profile_name
LIMIT { parameter value }[...];
説明
ユーザー定義プロファイルを変更 するには、 ALTER PROFILE コマンドを 使用し ます。 Advanced Serverは、次の2つの形式のコマンドをサポートしています。
・ ALTER 使用する PROFILE ... RENAME TO を TO てプロファイルの名前を変更します。
・ ALTER 使用する PROFILE ... LIMIT は、プロファイルに関連する制限を変更します。
含める LIMIT 句と1つ以上のスペースで区切られた parameter / value uが SE Advanced Serverのによって強制ルールを指定するペアを、または ALTER PROFILE ... RENAME TO を TO てプロファイルの名前を変更します。
パラメーター
profile_name
プロファイルの名前。
new_name
new_name は、プロファイルの新しい名前を指定します。
parameter
parameter specifies the attribute limited by the profile.
value
value specifies the parameter limit.
Advanced Serverは、 各 parameter について以下 の value サポートしてい parameter 。
FAILED_LOGIN_ATTEMPTS は、サーバーが PASSWORD_LOCK_TIME 指定された時間、アカウントからユーザーをロックする前に、ユーザーが失敗したログイン試行の回数を指定します 。サポートされる値は次のとおりです。
· An INTEGER value greater than 0 .
· DEFAULT - the value of DEFAULT profile. specified in the FAILED_LOGIN_ATTEMPTS - the value of profile.
· UNLIMITED – the connecting user may make an unlimited number of failed login attempts.
PASSWORD_LOCK_TIME specifies the length of time that must pass before the server unlocks an account that has been locked because of FAILED_LOGIN_ATTEMPTS. specifies the length of time that must pass before the server unlocks an account that has been locked because of FAILED_LOGIN_ATTEMPTS. サポートされる値は次のとおりです。
・ 0 以上 の NUMERIC 。 1日の小数部分を指定するには、小数値を指定します。たとえば、値 4.5 を 使用して 4 日 12 時間 を指定します 。
・ DEFAULT - DEFAULT プロファイルで 指定された PASSWORD_LOCK_TIME の値 。
・ UNLIMITED – アカウントはデータベーススーパーユーザーによって手動でロック解除されるまでロックされます。
PASSWORD_LIFE_TIME は、ユーザーに新しいパスワードを入力する前に現在のパスワードを使用する日数を指定します。 PASSWORD _ LIFE _ TIME 句を 使用する場合 は、 PASSWORD _ GRACE _ TIME 句を 含めて 、ロールによる接続が拒否されるまでにパスワードが期限切れになってから経過する日数を指定します。場合 PASSWORD _ GRACE _ TIME 指定されていない場合、パスワードはデフォルト値で指定された日に期限切れになります PASSWORD _ GRACE _ TIME 、およびユーザーは、新しいパスワードが提供されるまでの任意のコマンドを実行することはできません。サポートされる値は次のとおりです。
· 0 value greater than or equal to A NUMERIC . 1日の小数部分を指定するには、小数値を指定します。たとえば、値 4.5 を 使用して 4 日 12 時間 を指定します 。
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_LIFE_TIME - the value of profile.
· UNLIMITED – The password does not have an expiration date.
PASSWORD_GRACE_TIME ユーザーが自分のパスワードを変更するように強制されるまで、パスワードの有効期限が切れた後 の猶予 期間の長さをpecifies。猶予期間が切れると、ユーザーは接続を許可されますが、期限切れのパスワードを更新するまでコマンドを実行することはできません 。サポートされる値は次のとおりです。
・ 0 value greater than or equal to A NUMERIC . 1日の小数部分を指定するには、小数値を指定します。たとえば、値 4.5 を 使用して 4 日 12 時間 を指定します 。
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_GRACE_TIME - the value of profile.
· UNLIMITED – The grace period is infinite.
PASSWORD_REUSE_TIME は 、ユーザーが パスワードを 再 使用する まで待機する日数を 指定 し ます。 PASSWORD _ REUSE _ TIME と PASSWORD _ REUSE _ MAX パラメータを一緒に使用することが意図されています。これらのパラメータの1つに有限値を指定し、他のパラメータを UNLIMITED 、古いパスワードを決して再利用することはできません。両方のパラメータが UNLIMITED に 設定されている場合は 、パスワードの再利用に制限はありません。サポートされる値は次のとおりです。
· 0 value greater than or equal to A NUMERIC . 1日の小数部分を指定するには、小数値を指定します。たとえば、値 4.5 を 使用して 4 日 12 時間 を指定します 。
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_REUSE_TIME - the value of profile.
· UNLIMITED – The password can be re-used without restrictions.
PASSWORD_REUSE_MAX は 、パスワードを再利用できるようにするために必要なパスワードの変更回数を 指定 します。 PASSWORD _ REUSE _ TIME と PASSWORD _ REUSE _ MAX パラメータを一緒に使用することが意図されています。これらのパラメータの1つに有限値を指定し、他のパラメータを UNLIMITED 、古いパスワードを決して再利用することはできません。両方のパラメータが UNLIMITED に 設定されている場合は 、パスワードの再利用に制限はありません。サポートされる値は次のとおりです。
· 0 value greater than or equal to An INTEGER value greater than or equal to .
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_REUSE_MAX - the value of profile.
· UNLIMITED – The password can be re-used without restrictions.
PASSWORD_VERIFY_FUNCTION はパスワードの複雑さを指定します。サポートされる値は次のとおりです。
・ The name of a PL/SQL function.
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_VERIFY_FUNCTION - the value of profile.
· NULL
例 s
次の例では、 acctg_profile という名前のプロファイルを変更します 。
ALTER PROFILE acctg_profile
LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1;
ログインロールがサーバへの接続を試みると、 acctg_profile は失敗した接続試行回数をカウントします。このプロファイルでは、ユーザーが3回の試行で正しいパスワードで認証されなかった場合、そのアカウントは1日ロックされるように指定されています。
次の例では、 acctg_profile: '11.0pt、フォントサイズ'> =スタイルpayables_profile :
ALTER PROFILE acctg_profile RENAME TO payables_profile;
Advanced Serverには、Oracleによって提供されていない追加の構文が ALTER QUEUE SQL コマンド。この構文は、 DBMS _ AQADM パッケージ に関連して使用でき ます。
名
ALTER QUEUE - スーパーユーザーまたは aq _ administrator _ role 特権を 持つユーザーが キューの属性を変更できるようにします。
シノプシス
このコマンドは、4つの形式で使用できます。このコマンドの最初の形式は、キューの名前を変更します。
ALTER QUEUE queue_name RENAME TO new _ name
パラメーター
queue_name
名前(オプションとして スキーマ修飾された)
RENAME TO
RENAME 含める TO 句と、キューの名前を変更するキューの新しい名前。
new_name
キューの新しい名前。
ALTER の2番目の形式 QUEUE コマンドは、キューの属性を変更します。
ALTER QUEUE キュー _ 名 SET [({ オプション _ 名前 オプション _ 値 } [、 SET option _ name
パラメーター
queue_name
名前(オプションとして スキーマ修飾された)
SET 句と option _ name / option _ value ペアを 含めて 、キューの属性を変更します。
option _ name option_value
新しいキューに関連付けるオプションの名前および対応するオプションの値。重複するオプション名を指定すると、サーバーはエラーを返します。
・ オプション _ 名前が ある 場合 再試行で は、デキューを 試行 できる 回数 を表す整数を提供します。
・ オプション _ name が retrydelayの 場合 、秒単位の遅延を表す倍精度値を指定します。
・ オプション _ 名が 保持 され た場合は 、 秒単位で保持時間を表し、倍精度値を提供します。
ALTER 3番目の形式を使用する QUEUE コマンドを使用して、特定のキューのエンキューおよび/またはデキューを有効または無効にします。
ALTER QUEUE キュー _ 名 ACCESS {START | STOP} [FOR {エンキュー|デキュー}] [NOWAIT]
パラメーター
queue_name
名前(オプションとして スキーマ修飾された)
ACCESS
特定のキューでエンキューおよび/またはデキューを有効または無効にするに は、 ACCESS キーワードを 含め ます。
START | STOP
START および STOP キーワードを 使用して 、キューの希望の状態を示します。
FOR enqueue|dequeue
FOR 句を 使用し て、指定したキューのエンキューまたはデキューの状態を指定するかどうかを指定します。
NOWAIT
を含める キューの状態を変更する前に未処理トランザクションの完了を待たないように指定するには、 NOWAIT キーワードを使用します。 NOWAIT 指定するときにキーワードにのみ使用することができます ACCESS の値 STOP 。 NOWAIT が ACCESS 値 START 指定されている 場合、サーバーはエラーを戻します 。
4番目のフォームを使用して 、特定のキューのコールバック詳細 を ADD または DROP ます。
ALTER QUEUE キュー _ 名 {ADD | DROP} CALL TO location _ name [WITH コールバック _ オプション ]
パラメーター
queue_name
名前(オプションとして スキーマ修飾された)
追加|ドロップ
キューのコールバックの詳細を追加または削除するに は、 ADD キーワード または DROP キーワードを 含め ます。
場所の名前
location _ name は、コールバックプロシージャの名前を指定します。
コールバック _ オプション
コールバック _ オプション は コンテキストに する ことができ ます。 この句を含めるとき は RAW 値を 指定してください 。
例
次の例では、キューの名前 を work_order から work_queue_east に work_order ます。
ALTER QUEUE work_queue_east RENAME TO work_order;
次の例では、 再試行回数を100回、再試行間の遅延を2秒に、キューがデキューメッセージを10秒間に保持する時間を設定して、 work_order という名前のキューを変更します 。
ALTER QUEUE work_order SET (retries 100, retrydelay 2, retention 10);
次のコマンドは、という名前のキューにエンキューとデキューを有効 work_order :
ALTER QUEUE work_order ACCESS START;
ALTER QUEUE work_order ACCESS START FOR enqueue;
ALTER QUEUE work_order ACCESS START FOR dequeue;
次のコマンドは、というキューにエンキューとデキューを無効にする work _ order :
ALTER QUEUE work_order ACCESS STOP NOWAIT;
ALTER QUEUE work_order ACCESS STOP FOR enqueue;
ALTER QUEUE work_order ACCESS STOP FOR dequeue;
関連項目
CREATE QUEUE 、 DROP QUEUE
Advanced Serverには、 ALTER QUEUE SQL コマンドで 追加の構文(Oracleでは提供されていません)が含まれています 。この構文は 、 DBMS_AQADM パッケージ に関連し て 使用でき ます。
名
ALTER QUEUE TABLE - 既存のキューテーブルを変更します。
シノプシス
ALTER 使用する QUEUE 既存のキュー表の名前を変更する TABLE :
ALTER QUEUE TABLE name RENAME TO new _ name
説明
ALTER QUEUE TABLE スーパーユーザーまたはを持つユーザーことができます aq _ administrator _ role 権限は、既存のキュー表の名前を変更します。
パラメーター
name
名前(オプションとして スキーマ修飾された)既存のキュー表を削除します。
new_name
キュー表の新しい名前。
例
キュー表の名前を wo _ table _east から work_order_table 変更するには、 _east ようにし work_order_table 。
ALTER QUEUE TABLE wo_queue_east RENAME TO work_order_table;
関連項目
CREATE QUEUE TABLE 、 DROP QUEUE TABLE
ALTER ROLE - データベースロールに関連付けられたパスワードを変更する
ALTER ROLE role_name IDENTIFIED BY password
[REPLACE prev_password ]
CREATEROLE 権限の ないロールは、 このコマンドを使用して自分のパスワードを変更できます。特権のないロールには、 PASSWORD _ VERIFY _ FUNCTION が プロファイル内で NULL で ない 場合 、 REPLACE 句と以前のパスワードを 含める必要 があり NULL 。とき REPLACE 句は、非スーパーユーザによって使用され、サーバは、既存のパスワードに提供されたパスワードを比較しますと、パスワードが一致しない場合はエラーを発生させます。
データベースのスーパーユーザーは、このコマンドを使用して、任意のロールに関連付けられたパスワードを変更できます。スーパーユーザーが REPLACE 句を 含む場合 、その句は無視されます。前のパスワードの値が一致していてもエラーは発生しません。
パスワードが変更される SUPERUSER 属性がある場合、スーパーユーザーはこのコマンドを発行する必要があります。 CREATEROLE 属性を CREATEROLE ロールは、 このコマンドを使用して、スーパーユーザーではないロールに関連付けられたパスワードを変更できます。
パラメーター
role_name
パスワードを変更する役割の名前。
password
ロールの新しいパスワード。
ロールの以前のパスワード。
役割のパスワードを変更するには:
ALTER ROLE john IDENTIFIED BY xyRP35z REPLACE 23PJ74a;
Advanced Serverには、 ALTER に追加の構文が含まれています(Oracleでは提供されません)。 ROLE コマンド。この構文は、Oracleデータベースと互換性のあるデータベース・リンクの作成および削除、および細かいアクセス制御( DBMS_RLS を使用 )に 関連する権限を割り当てる場合に役立ちます 。
CREATE DATABASE LINK
CREATE を保持しているユーザー DATABASE LINK 権限はプライベートデータベースリンクを作成することがあります。次の ALTER ROLE コマンドは、指定されたロールがプライベート・データベース・リンクを作成できるようにAdvanced Serverロールに権限を付与します。
ALTER ROLE role _ name
WITH [CREATEDBLINK | CREATE DATABASE LINK]
このコマンドは、次の機能と同等です。
GRANT CREATE DATABASE LINK to role _ name
特権を取り消すには、次のコマンドを使用します。
ALTER ROLE role _ name
WITH [NOCREATEDBLINK | NO CREATE DATABASE LINK]
ご注意: CREATEDBLINK と NOCREATEDBLINK キーワードは廃止予定の構文と考えるべきです。 CREATE を使用することをおすすめします DATABASE LINK と NO CREATE DATABASE LINK 構文オプション。
パブリックデータベースリンクを作成する
CREATE を保持しているユーザー PUBLIC DATABASE LINK 権限はパブリックデータベースリンクを作成することがあります。次の ALTER ROLE コマンドは、指定されたロールがパブリック・データベース・リンクを作成できるようにAdvanced Serverロールに権限を付与します。
ALTER ROLE role _ name
WITH [CREATEPUBLICDBLINK |パブリックデータベースリンクの作成]
このコマンドは、次の機能と同等です。
GRANT CREATE PUBLIC DATABASE LINK to role _ name
特権を取り消すには、次のコマンドを使用します。
ALTER ROLE role _ name
WITH [NOCREATEPUBLICDBLINK | NO CREATE PUBLIC DATABASE LINK]
ご注意: CREATEPUBLICDBLINK と NOCREATEPUBLICDBLINK キーワードは廃止予定の構文と考えるべきです。 CREATE を使用することをおすすめします PUBLIC DATABASE LINK と NO CREATE PUBLIC DATABASE LINK 構文オプション。
公衆データベースリンクを抹消する
DROP を保持しているユーザー PUBLIC DATABASE LINK 権限によってパブリックデータベースリンクが削除される可能性があります。次の ALTER ROLE コマンドは、指定されたロールがパブリック・データベース・リンクを削除できるようにAdvanced Serverロールに権限を付与します。
ALTER ROLE role _ name
WITH [DROPPUBLICDBLINK | DROP PUBLIC DATABASE LINK]
このコマンドは、次の機能と同等です。
GRANT DROP PUBLIC DATABASE LINK to role _ name
特権を取り消すには、次のコマンドを使用します。
ALTER ROLE role _ name
WITH [NODROPPUBLICDBLINK | NO DROP PUBLIC DATABASE LINK]
ご注意: DROPPUBLICDBLINK と NODROPPUBLICDBLINK キーワードは廃止予定の構文と考えるべきです。 DROP を使用することをお勧めします PUBLIC DATABASE LINK と NO DROP PUBLIC DATABASE LINK 構文オプション。
退出のためのアクセスポリシー
EXEMPT を保持しているユーザー ACCESS POLICY 権限は、ファイングレイン・アクセス制御( DBMS_RLS )ポリシー から除外されています 。これらの権限を持つユーザーは、 DBMS_RLS ポリシーで 制約された表の行をすべて表示または変更できます 。次の ALTER ROLE コマンドは、指定された DBMS_RLS ポリシー から指定したロールを DBMS_RLS Advanced Serverロールに権限を付与します 。
ALTER ROLE role_name
WITH [POLICYEXEMPT | EXEMPT ACCESS POLICY]
このコマンドは、次の機能と同等です。
GRANT EXEMPT ACCESS POLICY TO role_name
特権を取り消すには、次のコマンドを使用します。
ALTER ROLE role_name
WITH [NOPOLICYEXEMPT | NO EXEMPT ACCESS POLICY]
ご注意: POLICYEXEMPT と NOPOLICYEXEMPT キーワードは廃止予定の構文と考えるべきです。 EXEMPT ACCESS POLICY と NO を使用することをお勧めします EXEMPT ACCESS POLICY 構文オプション。
関連項目
CREATE ROLE 、 DROP ROLE 、 GRANT 、 REVOKE 、 SET ROLE
ALTER SEQUENCE - シーケンスジェネレータの定義を変更する
ALTER SEQUENCE name [ INCREMENT BY increment ]
[ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
[ CACHE cache | NOCACHE ] [ CYCLE ]
ALTER SEQUENCE は、既存のシーケンスジェネレータのパラメータを変更します。 ALTER SEQUENCE コマンド で特に設定されていないパラメータ は、その前の設定を保持します。
name
変更されるシーケンスの名前(スキーマ修飾名も可)
increment
句の INCREMENT BY increment オプションです。正の値は昇順のシーケンスを、負の値は降順のシーケンスを作成します。指定されていない場合は、古い増分値が維持されます。
minvalue
オプションの節 MINVALUE minvalue は、シーケンスが生成できる最小値を決定します。指定しない場合、現在の最小値は維持されます。キーワード NO MINVALUE 使用して、この動作をそれぞれ昇順および降順のデフォルトの1および-2 63 -1に戻すことができ ます が、この用語は Oracleデータベースと互換性 がありません 。
maxvalue
オプション節 MAXVALUE maxvalue は、シーケンスの最大値を決定します。指定しない場合、現在の最大値は維持されます。キーワード NO MAXVALUE 使用して、昇順および降順のそれぞれに対してこの動作をデフォルトの2 63 -1および-1に戻すことができ ます が、この用語は Oracleデータベースと互換性 がありません 。
cache
オプションの CACHE 節 cache は、より早くアクセスできるように、事前割り当てされ、メモリに格納されるシーケンス番号の数を指定します。最小値は1です(一度に生成できる値は1つのみ、つまり NOCACHE )。未指定の場合、古いキャッシュ値が維持されます。
CYCLE
CYCLE オプションは、ときシーケンスはラップアラウンドすることを可能にする maxvalue または minvalue 昇順で到達したか、それぞれ降順されています。限界に達した場合、生成された次数があろう minvalue または maxvalue それぞれ。指定しなかった場合、古いサイクルの動作は維持されます。キーワード NO CYCLE 使用してシーケンスを変更してリサイクルしないようにすることもできますが、この用語はOracleデータベースと互換性がありません。
同じシーケンスから数値を取得する同時トランザクションのブロッキングを回避するために、 ALTER SEQUENCE はロールバックされません。変更はすぐに有効になり、元に戻すことはできません。
ALTER SEQUENCE は 、事前割り振り済み(キャッシュされた)順序値を持つバックエンド(現行のもの以外)の NEXTVAL 結果に 直ちに影響を与えません 。変更されたシーケンスパラメータに気づく前に、すべてのキャッシュされた値を使い切ります。現在のバックエンドはすぐに影響を受けます。
例
シーケンス serial のインクリメントとキャッシュの値を変更します 。
ALTER SEQUENCE serial INCREMENT BY 2 CACHE 5;
関連項目
CREATE SEQUENCE 、 DROP SEQUENCE
ALTER SESSION - 実行時パラメータを変更する
ALTER SESSION SET name = value
説明
ALTER SESSION コマンドは実行時設定パラメータを変更します。 ALTER SESSION は、現在のセッションで使用されている値にのみ影響します。これらのパラメータの一部は、 Oracle構文との互換性のためにのみ提供されており、 Advanced Serverのランタイム動作には何の影響も与えません。他のユーザーは、対応するAdvanced Serverデータベース・サーバーのランタイム構成パラメーターを変更します。
name
設定可能なランタイムパラメータの名前。使用可能なパラメータは以下のとおりです。
value
パラメータの新しい値。
次の構成パラメータは、 ALTER SESSION コマンド を使用して変更できます 。
NLS_DATE_FORMAT (string)
あいまいな日付入力値を解釈するための規則と同様に、日付と時刻の値の表示形式を設定します。 Advanced Server datestyle ランタイム構成パラメーターの 設定と同じ効果があり ます。
NLS_LANGUAGE (string)
メッセージが表示される言語を設定します。 Advanced Serverの lc_messages ランタイム構成パラメーターの 設定と同じ効果があり ます。
NLS_LENGTH_SEMANTICS (string)
有効な値は BYTE および CHAR です。デフォルトは BYTE です。このパラメータは、構文の互換性のためにのみ提供され、Advanced Serverでは無効です。
OPTIMIZER_MODE (string)
クエリのデフォルト最適化モードを設定します。有効な値は、 ALL_ROWS 、 CHOOSE 、 FIRST_ROWS 、 FIRST_ROWS_10 、 FIRST_ROWS_100 、および FIRST_ROWS_1000 です。デフォルトは CHOOSE です。このパラメータは、 Advanced Serverで実装されています 。
QUERY_REWRITE_ENABLED (string)
有効な値は、 TRUE 、 FALSE 、および FORCE です。デフォルトは FALSE です。このパラメータは、構文の互換性のためにのみ提供され、 Advanced Serverでは無効です。
QUERY_REWRITE_INTEGRITY (string)
有効な値は ENFORCED 、 TRUSTED 、および STALE_TOLERATED です。デフォルトは ENFORCED です。このパラメータは、構文の互換性のためにのみ提供され、 Advanced Serverでは無効です。
UTF-8エンコーディングで言語をUS Englishに設定します。この例では、値 en_US.UTF-8 はAdvanced Serverに指定する必要がある形式である ことに注意してください 。このフォームは、 Oracleデータベースと互換性がありません。
ALTER SESSION SET NLS_LANGUAGE = 'en_US.UTF-8';
日付表示形式を設定します。
ALTER SESSION SET NLS_DATE_FORMAT = 'dd/mm/yyyy';
ALTER TABLE - テーブルの定義を変更する
ALTER TABLE name
action [, ...]
ALTER TABLE name
RENAME COLUMN column TO new_column
ALTER TABLE name
RENAME TO new_name
どこ action 次のいずれかです。
ADD column type [ column_constraint [ ... ] ]
DROP COLUMN column
ADD table_constraint
DROP CONSTRAINT constraint_name [ CASCADE ]
ALTER TABLE は、既存のテーブルの定義を変更します。いくつかのサブフォームがあります:
ADD column type
このフォームは、 CREATE と同じ構文を使用して新しい列をテーブルに追加します TABLE 。
DROP COLUMN
このフォームは、テーブルから列を削除します。列を含む索引および表の制約も自動的に削除されます。
ADD table_constraint
このフォームは、 CREATE と同じ構文を使用してテーブルに新しい制約を追加します TABLE 。
DROP CONSTRAINT
このフォームは、テーブルの制約を削除します。現在、テーブルの制約には一意の名前を付ける必要はないため、指定された名前に一致する制約が複数存在する可能性があります。すべての一致する制約は削除されます。
RENAME
RENAME 形態は、テーブルの名前(またはインデックス、シーケンス、またはビュー)または表の個々の列の名前を変更します。保存されたデータには何の影響もありません。
ALTER TABLE を使用するには、表を所有している必要があります 。
name
変更する既存のテーブルの名前(おそらくスキーマ修飾名)。
column
新しい列または既存の列の名前。
new_column
既存の列の新しい名前。
new_name
テーブルの新しい名前。
type
新しい列のデータ型。
table_constraint
テーブルの新しいテーブル制約。
constraint_name
削除する既存の制約の名前。
CASCADE
ドロップされた制約に依存するオブジェクトを自動的にドロップします。
ADD COLUMN を呼び出す と、表の既存の行はすべて、列のデフォルト値( DEFAULT 句が指定されてい ない場合はNULL)で初期化 されます。 NULL以外の既定値を持つ列を追加するには、テーブル全体を書き換える必要があります。これは、大きなテーブルにはかなりの時間がかかることがあります。一時的に2倍のディスク容量が必要になります。 CHECK または NOT NULL 制約を 追加 するには、既存の行が制約を満たしていることを確認するために表をスキャンする必要があります。
DROP COLUMN の形式は、物理的に列を削除、単にSQL操作にそれが見えなくなりません。表の後続の挿入操作および更新操作では、その列にヌル値が保管されます。したがって、列を削除することは迅速ですが、削除された列が占有する領域が再利用されないため、表のディスク上のサイズはすぐには減少しません。スペースは、既存の行が更新されると時間の経過とともに再利用されます。
システムカタログ表の一部を変更することはできません。 有効なパラメータの詳細については、 CREATE TABLE を 参照してください 。
VARCHAR2 型の列を 表に 追加するには、次の ようにします。
ALTER TABLE emp ADD address VARCHAR2(30);
テーブルから列を削除するには:
ALTER TABLE emp DROP COLUMN address;
既存の列の名前を変更するには:
ALTER TABLE emp RENAME COLUMN address TO city;
既存のテーブルの名前を変更するには:
ALTER TABLE emp RENAME TO employee;
テーブルにチェック制約を追加するには:
ALTER TABLE emp ADD CONSTRAINT sal_chk CHECK (sal > 500);
テーブルからチェック制約を削除するには:
ALTER TABLE emp DROP CONSTRAINT sal_chk;
ALTER TABLESPACE - 表領域の定義を変更する
ALTER TABLESPACE name RENAME TO newname
ALTER TABLESPACE は、表領域の定義を変更します。
name
既存の表領域の名前。
newname
表スペースの新しい名前。この 名前はシステム表領域用に予約されているため、 新しい名前は pg_ で 始めることはできません 。
表領域 empspace 名前 を employee_space ます。
ALTER TABLESPACE empspace RENAME TO employee_space;
ALTER USER - データベースユーザーアカウントを変更する
ALTER USER role_name IDENTIFIED BY password REPLACE prev_password
CREATEROLE 権限の ないロールは、 このコマンドを使用して自分のパスワードを変更できます。特権のないロールには、 PASSWORD _ VERIFY _ FUNCTION が プロファイル内で NULL で ない 場合 、 REPLACE 句と以前のパスワードを 含める必要 があり NULL 。とき REPLACE 句は、非スーパーユーザによって使用され、サーバは、既存のパスワードに提供されたパスワードを比較しますと、パスワードが一致しない場合はエラーを発生させます。
データベースのスーパーユーザーは、このコマンドを使用して、任意のロールに関連付けられたパスワードを変更できます。スーパーユーザーが REPLACE 句を 含む場合 、その句は無視されます。前のパスワードの値が一致していてもエラーは発生しません。
パスワードが変更される SUPERUSER 属性がある場合、スーパーユーザーはこのコマンドを発行する必要があります。 CREATEROLE 属性を CREATEROLE ロールは、 このコマンドを使用して、スーパーユーザーではないロールに関連付けられたパスワードを変更できます。
パラメーター
role_name
パスワードを変更する役割の名前。
password
ロールの新しいパスワード。
prev_password
ロールの以前のパスワード。
例
ユーザーパスワードを変更する:
ALTER USER john IDENTIFIED BY xyRP35z REPLACE 23PJ74a;
名
ALTER USER|ROLE
シノプシス
ALTER USER|ROLE name [[WITH] option[…]
どこ option 、次の互換性の句を指定できます。
PROFILE profile_name
| ACCOUNT {LOCK|UNLOCK}
| PASSWORD EXPIRE [AT ' timestamp ']
または option は、次の互換性のない節に option ことができます。
| PASSWORD SET AT ' timestamp ' | PASSWORD SET AT '
| LOCK TIME ' timestamp '
| STORE PRIOR PASSWORD { 'password' 'timestamp } [, ...]
ALTER 管理句に関する情報 USER または ALTER ROLE コマンドについては、次のURLにあるPostgreSQLのコアドキュメントを参照してください。
https://www.postgresql.org/docs/10/static/sql-commands.html
データベースのスーパーユーザーだけが ALTER を使用できます USER | プロファイル管理を実施する ROLE 句 この条項は、次のような行動を強制します。
事前定義されたプロファイルを役割に関連付ける、または事前定義されたプロファイルがユーザーに関連付けられていることを変更するに Include the PROFILE 句と profile_name を Include the ます。
ACCOUNT 句と LOCK または UNLOCK キーワードを 含め て、ユーザー・アカウントをロック状態またはロック解除状態にする必要があることを指定します。
LOCK 含める TIME ' timestamp ' 句、および指定された時刻にロールをロックする日付/時刻値、および このロールに割り当てられたプロファイル の PASSWORD _ LOCK _ TIME パラメータで 指定された時刻にロールをロック解除し ます。もし LOCK TIME は ACCOUNT 使用されます LOCK 句では、ロールは、データベーススーパーユーザーが ACCOUNT 使用してのみロックを解除できます UNLOCK 句 。
PASSWORD 含める AT EXPIRE 句 ' timestamp ' キーワードを使用して、ロールに関連付けられたパスワードの有効期限が切れる日時を指定します。 AT を省略すると ' timestamp ' キーワードを入力すると、パスワードはすぐに期限切れになります。
PASSWORD 含める SET AT ' timestamp ' キーワードを使用して、パスワード修正日を指定された時間に設定します。
STORE 含める PRIOR PASSWORD { 'password' 'timestamp } [, ...] 新しいパスワードとパスワードが設定された時刻を追加します。
各ログインロールは1つのプロファイルのみを持つことができます。現在ログイン・ロールに関連付けられているプロファイルを検出するに は、 DBA_USERS ビューの profile 列を DBA_USERS ます。
パラメーター
name
指定されたプロファイルが関連付けられるロールの名前。
password
ロールに関連付けられたパスワード。
profile_name
ロールに関連付けられるプロファイルの名前。
timestamp
条項が適用される日時。 timestamp 値を指定する場合は 、値を一重引用符で囲みます。
注 秒
ALTER Postgres互換句に関する情報 USER または ALTER ROLE コマンドについては、次のURLにあるPostgreSQLのコアドキュメントを参照してください。
https://www.postgresql.org/docs/10/static/sql-alterrole.html
例
次のコマンドは、 ALTER USER… PROFILE コマンドを 使用して、 acctg という名前のプロファイルを john という名前のユーザー に関連付けます 。
ALTER USER john PROFILE acctg_profile;
次のコマンドは、 ALTER ROLE… PROFILE コマンドを 使用して、 acctg という名前のプロファイルを john という名前のユーザー に関連付けます 。
ALTER ROLE john PROFILE acctg_profile;
名
CALL
シノプシス
CALL procedure_name '('[ argument _ list ]')'
説明
プロシージャーを呼び出すには 、 CALL ステートメントを 使用し ます。 CALL ステートメント を使用するには 、 CALL ステートメントが呼び出す プロシージャーに対して EXECUTE 特権 が必要 です。
パラメーター
procedure_name
procedure_name は、(オプションでスキーマ修飾された)プロシージャ名です。
argument_list
argument_list は、プロシージャーで必要な引数のカンマ区切りのリストを指定します。 argument_list 各メンバーは 、プロシージャーが予期する仮引数に対応することに 注意してください 。各仮引数は、 IN パラメーター、 OUT パラメーター、または INOUT パラメーターです。
例
CALL 文は、プロシージャによって必要な引数に応じて、いくつかのいずれかの形式を取ることがあります。
CALL update_balance();
CALL update_balance(1,2,3);
COMMENT - オブジェクトのコメントを定義または変更する
COMMENT ON
{
TABLE table_name |
COLUMN table_name . column_name
} IS ' text '
COMMENT は、データベースオブジェクトに関するコメントを格納します。コメントを変更するに は、同じオブジェクトに対して 新しい COMMENT コマンドを 発行し ます。各オブジェクトには1つのコメント文字列しか格納されません。コメントを削除するには、 text 用に空の文字列(空白がない2つの連続した一重引用符)を指定し text 。コメントは、オブジェクトがドロップされると自動的に削除されます。
table_name
コメントを付けるテーブルの名前。テーブル名はスキーマで修飾されていてもかまいません。
table_name 。 column_name
コメントを 付ける table_name 内の列の名前 。テーブル名はスキーマで修飾されていてもかまいません。
text
新しいコメント。
現在のところ、コメントのセキュリティメカニズムはありません。データベースに接続しているすべてのユーザーは、データベース内のオブジェクトのすべてのコメントを見ることができます(ただし、スーパーユーザーのみが所有していないオブジェクトのコメントを変更できます)。 コメントにセキュリティ上重要な情報を入れないでください。
表 emp コメントを添付します 。
COMMENT ON TABLE emp IS 'Current employee information';
emp 表の empno 列に コメントを添付し ます。
COMMENT ON COLUMN emp.empno IS 'Employee identification number';
これらのコメントを削除します。
COMMENT ON TABLE emp IS '';
COMMENT ON COLUMN emp.empno IS '';
COMMIT -コミット 現在の取引
COMMIT [ WORK ]
COMMIT は現在のトランザクションをコミットします。トランザクションによって行われたすべての変更は、他の人にも見えるようになり、クラッシュが発生した場合でも耐久性が保証されます。
WORK
オプションのキーワード - 効果はありません。
トランザクションを中止するには、ROLLBACKを使用します。 トランザクション内でないときに COMMIT 発行 することは問題ありません。
現在のトランザクションをコミットし、すべての変更を永久にするには:
COMMIT;
関連項目
CREATE DATABASE - 新しいデータベースを作成する
CREATE DATABASE name
CREATE DATABASE は新しいデータベースを作成します。
データベースを作成するには、スーパーユーザーであるか、特別な CREATEDB 特権を 持っていなければなりません 。通常、作成者は新しいデータベースの所有者になります。 CREATEDB 特権を 持つ非スーパーユーザーは、 所有しているデータベースのみを作成できます。
新しいデータベースは、標準システムデータベース template1 複製することによって作成されます 。
name
作成するデータベースの名前。
CREATE DATABASE はトランザクションブロック内では実行できません。
「 データベースディレクトリを初期化できませんでした」という行に沿ったエラーは、データディレクトリ、フルディスク、またはその他のファイルシステムの問題に対する不十分なアクセス許可に関連している可能性があります。
新しいデータベースを作成するには:
CREATE DATABASE employees;
名
CREATE [PUBLIC] DATABASE LINK - 新しいデータベースリンクを作成します。
シノプシス
CREATE [ PUBLIC ] DATABASE LINK name
CONNECT TO { CURRENT_USER |
username IDENTIFIED BY ' password '}
USING { libpq ' libpq _ connection _ string ' |
postgres_fdw ' fdw_connection_string ' |
[ oci ] ' oracle _ connection _ string ' }
説明
CREATE DATABASE LINK は新しいデータベースリンクを作成します。データベース・リンクは、 DELETE 、 INSERT 、 SELECT または UPDATE コマンド 内のリモート・データベース内の表またはビューへの参照を可能にするオブジェクトです 。データベースリンクは 、 SQLコマンドで 参照される テーブルまたはビュー名に @ dblink を 追加することによって参照され ます。ここで、 dblink はデータベースリンクの名前です。
注意: USING 句では 、 libpq 代わりに 外部データラッパー postgres_fdw を使用する ことをお勧めし ます。 libpq オプションは、将来のAdvanced Serverのリリースで廃止されることがあります。
データベースリンクは公開または非公開にすることができます。 パブリック・データベース・リンクは、 任意のユーザーが使用することができるものです。 プライベート・データベース・リンクは 、データベース・リンクの所有者によって使用することができます。仕様 PUBLIC オプションは、パブリック・データベース・リンクを作成します。省略すると、プライベートデータベースリンクが作成されます。
場合は CREATE DATABASE LINK コマンドは、データベース・リンク名を与えられ、与えられた接続属性は、名前のAdvanced Serverのシステムテーブルに格納されている pg_catalog.edb_dblink 。特定のデータベースリンクを使用する場合、 このデータベースリンクを定義する edb_dblink エントリ を含むデータベースを ローカルデータベース と呼び ます 。接続属性が edb_dblink エントリ 内で定義されているサーバーとデータベース は、 リモートデータベース と呼ばれ ます
ローカルデータベースに接続している間は、データベースリンクへの参照を含むSQLコマンドを発行する必要があります。 SQLコマンドが実行されると、適切な認証と接続がリモートデータベースに対して行われ、 @ dblink 参照が追加され たテーブルまたはビューにアクセスします 。
注: データベース・リンクを使用して、スタンバイ・データベース・サーバー内のリモート・データベースにアクセスすることはできません。スタンバイデータベースサーバーは、高可用性、負荷分散、およびレプリケーションに使用されます。
PostgreSQLデータベースサーバの高可用性、ロードバランシング、およびレプリケーションについては、次のURLにあるPostgreSQLのコアドキュメントを参照してください。
https://www.postgresql.org/docs/10/static/high-availability.html
注: Advanced Server 10では、 CREATE DATABASE LINK コマンドは、Oracleバージョン10gリリース2(10.2)、Oracleバージョン11gリリース2(11.2)、およびOracleバージョン12cリリース1(12.1)で使用するためにテストされ、認証されています。
パラメーター
PUBLIC
任意のユーザーが使用できる公開データベースリンクを作成します。省略された場合、データベースリンクはプライベートであり、データベースリンクの所有者のみが使用できます。
name
データベースリンクの名前。
username
リモート・データベースへの接続に使用されるユーザー名。
CURRENT_USER
リモートサーバーへの接続を確立するときに、リンクを使用しているロールに関連付けられているユーザーマッピングをAdvanced Serverが使用するように指定するには、 CURRENT_USER を インクルードし ます。
password
username のパスワード 。
libpq
リモートAdvanced Serverデータベースへの libpq 接続を 指定し ます。
注: libpq 代わりに 外部データラッパー postgres_fdw を使用する ことをお勧めし ます。 libpq オプションは、将来のAdvanced Serverのリリースで廃止されることがあります。
libpq _ connection _ string
libpq接続の接続情報を指定します。
postgres_fdw
リモートのAdvanced Serverデータベースへの接続として 外部データラッパー postgres_fdw を 指定し ます。 postgres_fdw がデータベースにインストールされていない 場合 は、 CREATE EXTENSION コマンドを 使用して postgres_fdw をインストールし ます。詳細について は、PostgreSQL Coreのドキュメントの CREATE EXTENSION コマンド を参照してください 。
https://www.postgresql.org/docs/10/static/sql-createextension.html
fdw_connection_string
postgres_fdw 外部データラッパー の接続情報を指定し ます。接続形式は libpq_connection_string と同じ libpq_connection_string 。
oci
リモートOracleデータベースへの接続を指定します。これは、Advanced Serverのデフォルト動作です。
oracle_connection_string
oci接続の接続情報を指定します。
ノート
非公開のデータベースリンクを作成するには、 CREATE DATABASE LINK 特権。パブリック・データベース・リンクを作成するには、 CREATE PUBLIC DATABASE LINK 特権。
oci-dblinkのためのOracle Instant Clientの設定
oci-dblinkを使用するには、データベース・リンクを作成するAdvanced Serverデータベースを実行しているホストに、Oracleインスタント・クライアントをダウンロードしてインストールする必要があります。
インスタントクライアントは、次のサイトからダウンロードできます。
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
Linux用Oracle Instant Client
次の手順は、Advanced Serverを実行するLinuxホストに適用されます。
Advanced Serverを実行しているLinuxホストに libaio ライブラリ(Linux固有の非同期I / O機能)がインストールされている ことを確認してください 。
libaio ライブラリーは、以下のコマンドでインストールすることができます。
yum install libaio
ダウンロードしたOracleインスタント・クライアントに 、バージョン番号サフィックスがない libclntsh.so という名前のファイルが含まれていない 場合 は、ライブラリ・ファイルのダウンロード・バージョンを指す libclntsh.so という シンボリック・リンクを作成する必要があり ます。インスタントクライアントディレクトリに移動し、次のコマンドを実行します。
ln -s libclntsh.so. version libclntsh.so
どこ version バージョン番号である libclntsh.so ライブラリ。例えば:
ln -s libclntsh.so.12.1 libclntsh.so
リモートOracleデータベースへのデータベース・リンクを参照するSQLコマンドを実行する場合、Advanced ServerはOracleインスタント・クライアント・ライブラリがAdvanced Serverホスト上のどこにあるかを知る必要があります。
LD _ LIBRARY _ PATH 環境変数が含まれているOracleクライアントのインストールディレクトリへのパス含まれている必要があり libclntsh.so ファイルを。たとえば、 libclntsh.so を含むインストールディレクトリ が /tmp/instantclient であると仮定します 。
export LD_LIBRARY_PATH=/tmp/instantclient:$LD_LIBRARY_PATH
注: この LD _ LIBRARY _ PATH 際に、環境変数の設定が有効であることが必要 pg_ctl ユーティリティは、Advanced Serverを起動または再起動するために実行されます。
現在のセッション を pg_ctl を 直接 起動してAdvanced Serverを起動または再起動 するユーザーアカウント(たとえば enterprisedb ) として実行している場合は、 必ず pg_ctl を呼び出す前に LD_LIBRARY_PATH を設定して pg_ctl 。
LD_LIBRARY_PATH は、 enterprisedb ユーザーアカウントの ホームディレクトリの下 の .bash_profile ファイル 内で 設定 できます(つまり、 ~enterprisedb/.bash_profile 内に LD_LIBRARY_PATH 設定 します )。このようにして、 enterprisedb としてログインすると 、 LD_LIBRARY_PATH が設定されます 。
ただし、 systemctl または service コマンド でLinuxサービス・スクリプトを使用して Advanced Serverを起動または再起動して いる場合は、サービススクリプト内 で LD_LIBRARY_PATH 設定して、スクリプトが pg_ctl ユーティリティーを 呼び出すときに有効にする必要があり ます。
LD_LIBRARY_PATH 設定 を含むように変更する必要がある特定のスクリプトファイルは 、Advanced Serverのバージョン、インストールされているLinuxシステム、およびグラフィカルインストーラまたはRPMパッケージと共にインストールされたかどうかによって異なります。
スタートアップ環境に影響を与えるサービススクリプトを決定するには 、適切なバージョンの EDB Postgres Advanced Serverインストールガイド を 参照してください 。インストールガイドは、次の場所にあります。
https://www.enterprisedb.com/resources/product-documentation
Windows用Oracle Instant Client
次の手順は、Advanced Serverを実行するWindowsホストに適用されます。
リモートOracleデータベースへのデータベース・リンクを参照するSQLコマンドを実行する場合、Advanced ServerはOracleインスタント・クライアント・ライブラリがAdvanced Serverホスト上のどこにあるかを知る必要があります。
oci.dll ファイル を含むOracleクライアントインストールディレクトリを含めるように 、Windows PATH システム環境変数を 設定し ます。
代わり に、 postgresql oracle _ home 構成パラメータの 値を 設定できます 。 conf ファイル。 oracle _ home 構成パラメータで 指定された値 は、Windows PATH 環境変数 よりも優先されます 。
設定するには、 oracle _ home に設定パラメータを postgresql 。 conf ファイルを編集し、次の行を追加してファイルを編集します。
oracle_home = ' lib_directory '
oci を含むWindowsディレクトリの名前に oci 。 lib_directory ための dll 。例えば:
oracle_home = 'C:/tmp/instantclient_10_2'
設定後 PATH 環境変数または oracle _ home 構成パラメータを、変更を有効にするには、サーバーを再起動する必要があります。 Windowsサービスコンソールからサーバーを再起動します。
例
oci-dblinkデータベースリンクの作成
次の例は、 CREATE DATABASE LINK コマンドを使用して、 Advanced Serverのインスタンスをoci-dblink接続を介してOracleサーバーに接続する データベース・リンク(名前は chicago ) を作成します 。接続情報はAdvanced Serverに対して 、パスワードが mypassword ユーザー admin としてOracleにログインするように指示します 。 oci オプション を含めると、 これはoci-dblink接続であることがAdvanced Serverに伝えられます。接続文字列 '//127.0.0.1/acctg' は、サーバーのアドレスとデータベースの名前を指定します。
CREATE DATABASE LINK chicago
CONNECT TO admin IDENTIFIED BY 'mypassword'
USING oci '//127.0.0.1/acctg';
注:接続文字列に(IPアドレスの代わりに)ホスト名を指定することができます。
libpqデータベースリンクの作成
次の例は、 CREATE DATABASE LINK コマンドを使用して、 Advanced ServerのインスタンスをPostgres Serverにlibpq接続を介して接続する データベースリンク( boston ) を作成します 。接続情報はAdvanced Serverに パスワードが mypassword ユーザー admin としてPostgreSQLにログインするよう指示します 。 libpq オプション を含めると、 これがlibpq接続であることがAdvanced Serverに伝えられます。接続文字列 'host=127.0.0.1 dbname=sales' は、データベースのサーバーアドレスと名前を指定します。
CREATE DATABASE LINK boston
CONNECT TO admin IDENTIFIED BY 'mypassword'
USING libpq 'host=127.0.0.1 dbname=sales';
注:接続文字列に(IPアドレスの代わりに)ホスト名を指定することができます。
postgres_fdwデータベースリンクの作成
次の例は、 CREATE DATABASE LINK コマンドを使用し て、 postgres_fdw 外部データラッパー接続を 介してAdvanced Serverのインスタンスを別のAdvanced Serverインスタンスに接続する データベースリンク( bedford ) を作成します 。接続情報はAdvanced Serverに パスワードが mypassword ユーザー admin としてログインするように指示します 。 postgres_fdw オプション を含めると、 これはpostgres_fdw接続であることがAdvanced Serverに伝えられます。接続文字列 'host=127.0.0.1 port=5444 dbname=marketing' は、データベースのサーバーアドレスと名前を指定します。
CREATE DATABASE LINK bedford
CONNECT TO admin IDENTIFIED BY 'mypassword'
USING postgres_fdw 'host=127.0.0.1 port=5444 dbname=marketing';
注:接続文字列に(IPアドレスの代わりに)ホスト名を指定することができます。
データベースリンクの使用
次の例は、Advanced Serverでデータベース・リンクを使用してOracleデータベースに接続する方法を示しています。この例では、 Advanced Serverサンプル・アプリケーションの emp 表 のコピーが Oracleデータベースに作成され、 サンプル・アプリケーション を含む2番目のAdvanced Serverデータベース・クラスタがポート5443で接続を受け入れる と仮定し ています。
ポート1521の127.0.0.1にある xe という名前のOracleデータベースに oralink という名前のパブリック・データベース・リンクを作成し password 。 ユーザー名、 edb およびパスワード、 password を使用 してOracleデータベースに接続し password 。
CREATE PUBLIC DATABASE LINK oralink CONNECT TO edb IDENTIFIED BY 'password' USING '//127.0.0.1:1521/xe';
データベースリンク、 oralink を使用して、 Oracleデータベースの emp テーブル に対して SELECT コマンドを 発行 します 。
SELECT * FROM emp@oralink;
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+--------+-----------+------+--------------------+------+------+--------
7369 | SMITH | CLERK | 7902 | 17-DEC-80 00:00:00 | 800 | | 20
7499 | ALLEN | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600 | 300 | 30
7521 | WARD | SALESMAN | 7698 | 22-FEB-81 00:00:00 | 1250 | 500 | 30
7566 | JONES | MANAGER | 7839 | 02-APR-81 00:00:00 | 2975 | | 20
7654 | MARTIN | SALESMAN | 7698 | 28-SEP-81 00:00:00 | 1250 | 1400 | 30
7698 | BLAKE | MANAGER | 7839 | 01-MAY-81 00:00:00 | 2850 | | 30
7782 | CLARK | MANAGER | 7839 | 09-JUN-81 00:00:00 | 2450 | | 10
7788 | SCOTT | ANALYST | 7566 | 19-APR-87 00:00:00 | 3000 | | 20
7839 | KING | PRESIDENT | | 17-NOV-81 00:00:00 | 5000 | | 10
7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500 | 0 | 30
7876 | ADAMS | CLERK | 7788 | 23-MAY-87 00:00:00 | 1100 | | 20
7900 | JAMES | CLERK | 7698 | 03-DEC-81 00:00:00 | 950 | | 30
7902 | FORD | ANALYST | 7566 | 03-DEC-81 00:00:00 | 3000 | | 20
7934 | MILLER | CLERK | 7782 | 23-JAN-82 00:00:00 | 1300 | | 10
(14 rows)
ポート5443で実行されているlocalhost上の edb という名前のAdvanced Serverデータベースに 、 edblink というプライベート・データベース・リンクを作成 します。username、 enterprisedb およびpassword、 password を使用 してAdvanced Serverデータベースに接続し password 。
CREATE DATABASE LINK edblink CONNECT TO enterprisedb IDENTIFIED BY 'password' USING libpq 'host=localhost port=5443 dbname=edb';
ローカルの edb_dblink システムテーブル から、 データベースリンク、 oralink 、および edblink 属性を表示します 。
SELECT lnkname, lnkuser, lnkconnstr FROM pg_catalog.edb_dblink;
lnkname | lnkuser | lnkconnstr
---------+--------------+-------------------------------------
oralink | edb | //127.0.0.1:1521/xe
edblink | enterprisedb | host=localhost port=5443 dbname=edb
(2 rows)
Advanced Serverデータベースの dept テーブルを 使用して、 Oracleデータベースの emp テーブルの 結合を実行し ます。
SELECT d.deptno, d.dname, e.empno, e.ename, e.job, e.sal, e.comm FROM emp@oralink e, dept@edblink d WHERE e.deptno = d.deptno ORDER BY 1, 3;
deptno | dname | empno | ename | job | sal | comm
--------+------------+-------+--------+-----------+------+------
10 | ACCOUNTING | 7782 | CLARK | MANAGER | 2450 |
10 | ACCOUNTING | 7839 | KING | PRESIDENT | 5000 |
10 | ACCOUNTING | 7934 | MILLER | CLERK | 1300 |
20 | RESEARCH | 7369 | SMITH | CLERK | 800 |
20 | RESEARCH | 7566 | JONES | MANAGER | 2975 |
20 | RESEARCH | 7788 | SCOTT | ANALYST | 3000 |
20 | RESEARCH | 7876 | ADAMS | CLERK | 1100 |
20 | RESEARCH | 7902 | FORD | ANALYST | 3000 |
30 | SALES | 7499 | ALLEN | SALESMAN | 1600 | 300
30 | SALES | 7521 | WARD | SALESMAN | 1250 | 500
30 | SALES | 7654 | MARTIN | SALESMAN | 1250 | 1400
30 | SALES | 7698 | BLAKE | MANAGER | 2850 |
30 | SALES | 7844 | TURNER | SALESMAN | 1500 | 0
30 | SALES | 7900 | JAMES | CLERK | 950 |
(14 rows)
postgres_fdw 外部データラッパーを使用してAdvanced Serverデータベースリンクを作成する と、OracleデータベースとAdvanced Serverデータベースで同じクエリを実行できます 。
ポート5444上で実行されているホスト192.168.2.22にある edb という名前のAdvanced Serverデータベースに 、 fdwlink というプライベート・データベース・リンクを作成 します。username、 enterprisedb およびpasswordというパスワードで Advanced Serverデータベースに接続し password 。
CREATE DATABASE LINK fdwlink CONNECT TO enterprisedb IDENTIFIED BY 'password' USING postgres_fdw 'host=192.168.2.22 port=5444 dbname=edb';
ローカルの edb_dblink システム・テーブル から データベース・リンク oralink および fdwlink 属性を表示します 。
SELECT lnkname, lnkuser, lnkconnstr FROM pg_catalog.edb_dblink;
lnkname | lnkuser | lnkconnstr
---------+--------------+----------------------------------------
oralink | edb | //127.0.0.1:1521/xe
fdwlink | enterprisedb |
(2 rows)
Advanced Serverデータベースの dept テーブルを 使用して、 Oracleデータベースの emp テーブルの 結合を実行し ます。
SELECT d.deptno, d.dname, e.empno, e.ename, e.job, e.sal, e.comm FROM emp@oralink e, dept@fdwlink d WHERE e.deptno = d.deptno ORDER BY 1, 3;
deptno | dname | empno | ename | job | sal | comm
--------+------------+-------+--------+-----------+------+------
10 | ACCOUNTING | 7782 | CLARK | MANAGER | 2450 |
10 | ACCOUNTING | 7839 | KING | PRESIDENT | 5000 |
10 | ACCOUNTING | 7934 | MILLER | CLERK | 1300 |
20 | RESEARCH | 7369 | SMITH | CLERK | 800 |
20 | RESEARCH | 7566 | JONES | MANAGER | 2975 |
20 | RESEARCH | 7788 | SCOTT | ANALYST | 3000 |
20 | RESEARCH | 7876 | ADAMS | CLERK | 1100 |
20 | RESEARCH | 7902 | FORD | ANALYST | 3000 |
30 | SALES | 7499 | ALLEN | SALESMAN | 1600 | 300
30 | SALES | 7521 | WARD | SALESMAN | 1250 | 500
30 | SALES | 7654 | MARTIN | SALESMAN | 1250 | 1400
30 | SALES | 7698 | BLAKE | MANAGER | 2850 |
30 | SALES | 7844 | TURNER | SALESMAN | 1500 | 0
30 | SALES | 7900 | JAMES | CLERK | 950 |
(14 rows)
ociデータベースリンクのプッシュダウン
oci-dblinkを使用してリモートOracleデータベースでSQL文を実行すると、処理のプッシュダウンが外部サーバで発生する特定の状況があります。
プッシュダウン とは、SQL文が発行されたローカル・クライアントではなく、外部(つまりリモート)サーバーでの処理の発生を指します。プッシュダウンは、データがローカル・クライアントに戻される前にリモート・サーバーで処理されるため、パフォーマンスが向上します。
プッシュダウンは、標準のSQL結合操作(内部結合、左外部結合、右外部結合、および完全外部結合)を使用する文に適用されます。結果のデータセットにソートが指定されていてもプッシュダウンが発生します。
プッシュダウンが発生するには、特定の基本条件を満たす必要があります。結合操作に関係する表は、同じ外部サーバーに属し、外部サーバー(つまり、 CREATE DATABASE LINK コマンドで 定義された同じデータベース・リンク)と同じ接続情報を使用する必要があります 。
SQL文でプッシュダウンを使用するかどうかを判断するには、 EXPLAIN コマンド を使用して実行計画を表示します 。
詳細については EXPLAIN コマンドにてPostgreSQLのコアのドキュメントを参照してください。
https://www.postgresql.org/docs/10/static/sql-explain.html
次の例では、作成されたデータベースリンクを次のように使用しています。
CREATE PUBLIC DATABASE LINK oralink CONNECT TO edb IDENTIFIED BY 'password' USING '//192.168.2.23:1521/xe';
次の例は、内部結合の実行計画を示しています。
EXPLAIN (verbose,costs off) SELECT d.deptno, d.dname, e.empno, e.ename FROM dept@oralink d, emp@oralink e WHERE d.deptno = e.deptno ORDER BY 1, 3;
QUERY PLAN
--------------------------------------------------------------------------------
Foreign Scan
Output: d.deptno, d.dname, e.empno, e.ename
Relations: (_dblink_dept_1 d) INNER JOIN (_dblink_emp_2 e)
Remote Query: SELECT r1.deptno, r1.dname, r2.empno, r2.ename FROM (dept r1 INNER JOIN emp r2 ON ((r1.deptno = r2.deptno))) ORDER BY r1.deptno ASC NULLS LAST, r2.empno ASC NULLS LAST
(4 rows)
INNER JOIN 操作は、外部スキャンセクションで行わ れることに注意してください 。この結合の出力は次のとおりです。
deptno | dname | empno | ename
--------+------------+-------+--------
10 | ACCOUNTING | 7782 | CLARK
10 | ACCOUNTING | 7839 | KING
10 | ACCOUNTING | 7934 | MILLER
20 | RESEARCH | 7369 | SMITH
20 | RESEARCH | 7566 | JONES
20 | RESEARCH | 7788 | SCOTT
20 | RESEARCH | 7876 | ADAMS
20 | RESEARCH | 7902 | FORD
30 | SALES | 7499 | ALLEN
30 | SALES | 7521 | WARD
30 | SALES | 7654 | MARTIN
30 | SALES | 7698 | BLAKE
30 | SALES | 7844 | TURNER
30 | SALES | 7900 | JAMES
(14 rows)
左外部結合の実行計画を以下に示します。
EXPLAIN (verbose,costs off) SELECT d.deptno, d.dname, e.empno, e.ename FROM dept@oralink d LEFT OUTER JOIN emp@oralink e ON d.deptno = e.deptno ORDER BY 1, 3;
QUERY PLAN
--------------------------------------------------------------------------------
Foreign Scan
Output: d.deptno, d.dname, e.empno, e.ename
Relations: (_dblink_dept_1 d) LEFT JOIN (_dblink_emp_2 e)
Remote Query: SELECT r1.deptno, r1.dname, r2.empno, r2.ename FROM (dept r1 LEFT JOIN emp r2 ON ((r1.deptno = r2.deptno))) ORDER BY r1.deptno ASC NULLS LAST, r2.empno ASC NULLS LAST
(4 rows)
この結合の出力は次のとおりです。
deptno | dname | empno | ename
--------+------------+-------+--------
10 | ACCOUNTING | 7782 | CLARK
10 | ACCOUNTING | 7839 | KING
10 | ACCOUNTING | 7934 | MILLER
20 | RESEARCH | 7369 | SMITH
20 | RESEARCH | 7566 | JONES
20 | RESEARCH | 7788 | SCOTT
20 | RESEARCH | 7876 | ADAMS
20 | RESEARCH | 7902 | FORD
30 | SALES | 7499 | ALLEN
30 | SALES | 7521 | WARD
30 | SALES | 7654 | MARTIN
30 | SALES | 7698 | BLAKE
30 | SALES | 7844 | TURNER
30 | SALES | 7900 | JAMES
40 | OPERATIONS | |
(15 rows)
次の例は、 emp joinedテーブルが同じ外部サーバではなくローカルに存在 するため、処理全体がプッシュダウンされない場合を示してい ます。
EXPLAIN (verbose,costs off) SELECT d.deptno, d.dname, e.empno, e.ename FROM dept@oralink d LEFT OUTER JOIN emp e ON d.deptno = e.deptno ORDER BY 1, 3;
QUERY PLAN
------------------------------------------------------------------
Sort
Output: d.deptno, d.dname, e.empno, e.ename
Sort Key: d.deptno, e.empno
-> Hash Left Join
Output: d.deptno, d.dname, e.empno, e.ename
Hash Cond: (d.deptno = e.deptno)
-> Foreign Scan on _dblink_dept_1 d
Output: d.deptno, d.dname, d.loc
Remote Query: SELECT deptno, dname, NULL FROM dept
-> Hash
Output: e.empno, e.ename, e.deptno
-> Seq Scan on public.emp e
Output: e.empno, e.ename, e.deptno
(13 rows)
この結合の出力は、前の左外部結合の例と同じです。
データベースリンクから外部テーブルを作成する
注意: この項で説明する手順は、Oracleデータベースと互換性がありません。
データベース・リンクを作成した後、このデータベース・リンクに基づいて外部表を作成できます。外部テーブルを使用して、データベースリンク構文を使用する代わりに外部テーブル名を参照するリモートテーブルにアクセスすることができます。データベースリンクを使用するに は、 SQLコマンドで参照されるテーブルまたはビュー名に @ dblink を 追加する必要 があります。 ここで、 dblink はデータベースリンクの名前です。
この手法は、リモートOracleアクセス用のoci-dblink接続、またはリモートPostgresアクセス用のlibpqまたはpostgres_fdw接続のいずれかに使用できます。
次の例は、リモートOracle表にアクセスするための外部表の作成を示しています。
まず、前述のようにデータベースリンクを作成します。次に 、Oracleデータベースに接続するための oralink というデータベース・リンクを作成し ます。
CREATE PUBLIC DATABASE LINK oralink CONNECT TO edb IDENTIFIED BY 'password' USING '//127.0.0.1:1521/xe';
次のクエリは、データベースリンクを示しています。
SELECT lnkname, lnkuser, lnkconnstr FROM pg_catalog.edb_dblink;
lnkname | lnkuser | lnkconnstr
---------+---------+---------------------
oralink | edb | //127.0.0.1:1521/xe
(1 row)
データベースリンクを作成すると、Advanced Serverは対応する外部サーバーを作成します。次のクエリは、外部サーバを表示します。
SELECT srvname, srvowner, srvfdw, srvtype, srvoptions FROM pg_foreign_server;
srvname | srvowner | srvfdw | srvtype | srvoptions
---------+----------+--------+---------+-------------------------------
oralink | 10 | 14005 | | {connstr = // 127.0.0.1:1521/xe}
(1 row)
外部サーバの詳細については 、PostgreSQL Coreドキュメントの CREATE SERVER コマンド を参照してください 。
https://www.postgresql.org/docs/10/static/sql-createserver.html
次のように外部表を作成します。
CREATE FOREIGN TABLE emp_ora (
empno NUMERIC(4),
ename VARCHAR(10),
job VARCHAR(9),
mgr NUMERIC(4),
hiredate TIMESTAMP WITHOUT TIME ZONE,
sal NUMERIC(7,2),
comm NUMERIC(7,2),
deptno NUMERIC(2)
)
SERVER oralink
OPTIONS (table_name 'emp', schema_name 'edb'
);
CREATE FOREIGN TABLE コマンド では次の点に注意してください 。
・ で指定された名前 SERVER の最後に句 CREATE FOREIGN TABLE コマンドがされて外部サーバの名前です oralink に表示されているように、この例で srvname 上のクエリから列 pg_foreign_server 。
・ テーブル名とスキーマ名は、 OPTIONS 句に table オプション と schema オプションで 指定し ます。
・ CREATE FOREIGN TABLE コマンドで 指定され た列名は、リモート表の列名と一致する必要があります。
・ 一般的に、 CONSTRAINT 句は、リモート表で定義されているとみなされるため、外部表で受け入れられたり強制されたりしないことがあります。
CREATE FOREIGN 詳細については、 TABLE コマンドについては、PostgreSQL Coreのドキュメントを参照してください:
https://www.postgresql.org/docs/10/static/sql-createforeigntable.html
次は外部テーブルのクエリです。
SELECT * FROM emp_ora;
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+--------+-----------+------+--------------------+---------+---------+--------
7369 | SMITH | CLERK | 7902 | 17-DEC-80 00:00:00 | 800.00 | | 20
7499 | ALLEN | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600.00 | 300.00 | 30
7521 | WARD | SALESMAN | 7698 | 22-FEB-81 00:00:00 | 1250.00 | 500.00 | 30
7566 | JONES | MANAGER | 7839 | 02-APR-81 00:00:00 | 2975.00 | | 20
7654 | MARTIN | SALESMAN | 7698 | 28-SEP-81 00:00:00 | 1250.00 | 1400.00 | 30
7698 | BLAKE | MANAGER | 7839 | 01-MAY-81 00:00:00 | 2850.00 | | 30
7782 | CLARK | MANAGER | 7839 | 09-JUN-81 00:00:00 | 2450.00 | | 10
7788 | SCOTT | ANALYST | 7566 | 19-APR-87 00:00:00 | 3000.00 | | 20
7839 | KING | PRESIDENT | | 17-NOV-81 00:00:00 | 5000.00 | | 10
7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500.00 | 0.00 | 30
7876 | ADAMS | CLERK | 7788 | 23-MAY-87 00:00:00 | 1100.00 | | 20
7900 | JAMES | CLERK | 7698 | 03-DEC-81 00:00:00 | 950.00 | | 30
7902 | FORD | ANALYST | 7566 | 03-DEC-81 00:00:00 | 3000.00 | | 20
7934 | MILLER | CLERK | 7782 | 23-JAN-82 00:00:00 | 1300.00 | | 10
(14 rows)
これとは対照的に、以下は外部テーブルの代わりにデータベースリンクを使用して、同じリモートテーブルに対するクエリです。
SELECT * FROM emp@oralink;
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+--------+-----------+------+--------------------+------+------+--------
7369 | SMITH | CLERK | 7902 | 17-DEC-80 00:00:00 | 800 | | 20
7499 | ALLEN | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600 | 300 | 30
7521 | WARD | SALESMAN | 7698 | 22-FEB-81 00:00:00 | 1250 | 500 | 30
7566 | JONES | MANAGER | 7839 | 02-APR-81 00:00:00 | 2975 | | 20
7654 | MARTIN | SALESMAN | 7698 | 28-SEP-81 00:00:00 | 1250 | 1400 | 30
7698 | BLAKE | MANAGER | 7839 | 01-MAY-81 00:00:00 | 2850 | | 30
7782 | CLARK | MANAGER | 7839 | 09-JUN-81 00:00:00 | 2450 | | 10
7788 | SCOTT | ANALYST | 7566 | 19-APR-87 00:00:00 | 3000 | | 20
7839 | KING | PRESIDENT | | 17-NOV-81 00:00:00 | 5000 | | 10
7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500 | 0 | 30
7876 | ADAMS | CLERK | 7788 | 23-MAY-87 00:00:00 | 1100 | | 20
7900 | JAMES | CLERK | 7698 | 03-DEC-81 00:00:00 | 950 | | 30
7902 | FORD | ANALYST | 7566 | 03-DEC-81 00:00:00 | 3000 | | 20
7934 | MILLER | CLERK | 7782 | 23-JAN-82 00:00:00 | 1300 | | 10
(14 rows)
関連項目
名
CREATE DIRECTORY - ファイルシステムディレクトリパスのエイリアスを作成する
CREATE DIRECTORY name AS ' pathname '
CREATE DIRECTORY コマンドは、ファイルシステムディレクトリのパス名のエイリアスを作成します。このコマンドを使用するには、データベースのスーパーユーザーである必要があります。
エイリアスが UTL_FILE パッケージの プログラムに対する適切なパラメータとして指定される と、オペレーティング・システム・ファイルは、指定された エイリアスに 対応するディレクトリに作成されるか、またはそこからアクセスされます 。
name
ディレクトリエイリアス名。
pathname
エイリアス名で表される完全修飾ディレクトリパス。 CREATE DIRECTORY コマンドは、オペレーティングシステムのディレクトリを作成しません。物理ディレクトリは、適切なオペレーティングシステムコマンドを使用して個別に作成する必要があります。
オペレーティングシステムのユーザーID、 ディレクトリを 使用してファイルを作成および/または読み取るために UTL_FILE パッケージを使用する 場合は、ディレクトリに対して適切な読み取り権および/または書き込み権を持っている必要が UTL_FILE ます。
ディレクトリエイリアスは、 pg_catalog.edb_dir システムカタログテーブルに 格納されてい pg_catalog.edb_dir 。ことに注意してください edb_dir Oracleデータベースと互換性の表ではありません。
ディレクトリ・エイリアスは 、Oracleデータベースと互換性のある SYS.ALL_DIRECTORIES および SYS.DBA_DIRECTORIES というOracleカタログ・ビューからも参照でき ます。
ディレクトリエイリアスを削除するには 、 DROP DIRECTORY コマンドを使用します。ディレクトリエイリアスが削除されると、対応する物理ファイルシステムディレクトリは影響を受けません。ファイルシステムディレクトリは、適切なオペレーティングシステムコマンドを使用して削除する必要があります。
Linuxシステムでは、ディレクトリ名の区切り文字はスラッシュ( / )です。
Windowsシステムでは、ディレクトリ名の区切り文字をスラッシュ( / )または2つの連続する円記号( \\ ) として指定できます 。
例
Linuxの empdir 、ディレクトリ /tmp/empdir empdir というエイリアスを作成します 。
CREATE DIRECTORY empdir AS '/tmp/empdir';
Windowsでは、 C:\TEMP\EMPDIR ディレクトリの 別名 empdir を 作成 します。
CREATE DIRECTORY empdir AS 'C:/TEMP/EMPDIR';
すべてのディレクトリエイリアスを表示する:
SELECT * FROM pg_catalog.edb_dir;
dirname | dirowner | dirpath | diracl
---------+----------+----------------+--------
empdir | 10 | C:/TEMP/EMPDIR |
(1 row)
Oracleデータベースと互換性のあるビューを使用して、ディレクトリ別名を表示します。
SELECT * FROM SYS.ALL_DIRECTORIES;
owner | directory_name | directory_path
--------------+----------------+----------------
ENTERPRISEDB | EMPDIR | C:/TEMP/EMPDIR
(1 row)
関連項目
名
シノプシス
CREATE [ OR REPLACE ] FUNCTION name [ ( parameters ) ]
RETURN data_type
[
IMMUTABLE
| STABLE
| VOLATILE
| DETERMINISTIC
| [ NOT ] LEAKPROOF
| CALLED ON NULL INPUT
| RETURNS NULL ON NULL INPUT
| STRICT
| [ EXTERNAL ] SECURITY INVOKER
| [ EXTERNAL ] SECURITY DEFINER
| AUTHID DEFINER
| AUTHID CURRENT_USER
| PARALLEL { UNSAFE | RESTRICTED | SAFE }
| コスト 実行 _ コスト
| ROWS result _ rows
| SET configuration _ parameter
{ TO value | = value | FROM CURRENT }
...]
{ IS | AS }
[ declarations ]
BEGIN
statements
END [ name ];
説明
CREATE FUNCTION は新しい関数を定義します。 CREATE OR REPLACE FUNCTION は、新しい関数を作成するか、既存の定義を置き換えます。
スキーマ名が含まれている場合、関数は指定されたスキーマに作成されます。それ以外の場合は、現在のスキーマに作成されます。新しい関数の名前は、同じスキーマ内の同じ引数型を持つ既存の関数と一致していてはなりません。しかし、異なる入力引数型の関数は名前を共有することがあります(これはオーバーロードと呼ばれます)。 (関数のオーバーロードはAdvanced Serverの機能であり、ストアド・ファンクションのオーバーロードはOracleデータベースと互換性がありません。)
既存の関数の定義を更新するには、 CREATE OR REPLACE FUNCTION 使用します 。このようにして関数の名前や引数の型を変更することはできません(試した場合、実際には別個の新しい関数を作成することになります)。また、 CREATE OR REPLACE FUNCTION では 、既存の関数の戻り値の型を変更することはできません。これを行うには、関数を削除して再作成する必要があります。
関数を作成するユーザーは、関数の所有者になります。
パラメーター
name
name は 関数 の識別子です 。 [OR REPLACE] 句と 関数 を指定する と 同じ名前が既にスキーマに存在する場合、新しい 関数 既存のものを置き換えます。 [OR REPLACE] 指定しない と、新しい 関数 既存の 機能を 置き換えません 同じスキーマ内で同じ名前を使用します。
parameters
parameters は仮パラメータのリストです。
data_type
data_type は、関数の RETURN ステートメント によって返された値のデータ型です 。
declarations
declarations は、変数、カーソル、型、または副プログラムの宣言です。サブプログラム宣言が含まれている場合は、他のすべての変数宣言、カーソル宣言、および型宣言の後に宣言する必要があります。
statements
statements は SPL プログラムステートメントです( BEGIN - END ブロックには EXCEPTION セクション が含まれる場合があります )。
IMMUTABLE
STABLE
VOLATILE
これらの属性は、クエリオプティマイザに 関数の 動作を通知します 。 1つの選択肢しか指定できません。 VOLATILE はデフォルトの動作です。
IMMUTABLE は、 関数がデータベースを変更できず、同じ引数値が与えられたときに常に同じ結果に達することを示します。データベース参照を行わず、引数リストに直接存在しない情報を使用しません。この句を含める と、すべて定数の引数を持つ関数の呼び出しを すぐに関数の値 に置き換えることができ ます。
STABLE は、 関数がデータベースを変更できない ことを示し 、単一のテーブル内で同じ引数値に対して同じ結果を常に返しますが、その結果はSQL文全体で変更される可能性があることを示します。これは、 データベースルックアップ、パラメータ変数(現在のタイムゾーンなど)に依存する関数の適切な選択です 。
VOLATILE は 、単一のテーブル・スキャン内でも関数値が変更できることを 示している ため、最適化は行えません。副作用のある関数は、呼び出しが最適化されないように、結果がかなり予測可能であっても、揮発性に分類されなければならないことに注意してください。
DETERMINISTIC
DETERMINISTIC は IMMUTABLEの 同義語です 。 DETERMINISTIC 関数は、 データベースを変更し、同じ引数値を与えた場合、常に同じ結果に達することができません。データベース参照を行わず、引数リストに直接存在しない情報を使用しません。この句を含めると、すべて定数の引数を持つ関数の呼び出しをすぐに関数の値に置き換えることができます。
[NOT] LEAKPROOF
LEAKPROOK 関数には副作用がなく、関数の呼び出しに使用された値に関する情報は表示されません 。
NULL入力で呼び出される
ヌル入力でNULLを返す
STRICT
呼び出される に ヌル INPUT (デフォルト)は、引数の一部が NULLの 場合にプロシージャが正常に呼び出されることを示し ます 。 必要に応じ て NULL 値 をチェックし、 適切に応答するの は作者の責任 です。
戻り値 ヌル に ヌル INPUT または STRICT は 、その引数のいずれか が NULL の場合は必ずプロシージャが NULL を返すことを示し ます 。これらの句が指定されている場合、 NULL 引数 がある場合はプロシージャは実行されません 。代わりに NULL という結果が自動的想定されます。
[ EXTERNAL ] SECURITY DEFINER
SECURITY DEFINER は、関数を作成したユーザーの権限で関数が実行されることを指定します。これがデフォルトです。キーワード EXTERNAL はSQL準拠には使用できますが、オプションです。
[ EXTERNAL ] SECURITY INVOKER
SECURITY INVOKER 句は、関数を呼び出すユーザーの権限で関数が実行されることを示します。キーワード EXTERNAL はSQL準拠には使用できますが、オプションです。
AUTHID DEFINER
AUTHID CURRENT_USER
AUTHID DEFINER 句は、 [EXTERNAL] 同義語です [EXTERNAL] SECURITY DEFINER 。もし AUTHID 句が省略された場合、または AUTHID DEFINER が指定されている場合、関数所有者の権限を使用してデータベース・オブジェクトへのアクセス権限が決定されます。
AUTHID CURRENT_USER 句は、 [EXTERNAL] 同義語です [EXTERNAL] SECURITY INVOKER 。 AUTHID 場合 CURRENT_USER が指定されている場合、その関数を実行している現行ユーザーの権限を使用してアクセス特権が判別されます。
PARALLEL { UNSAFE | RESTRICTED | SAFE }
PARALLEL 句は、並列逐次走査(パラレルモード)の使用を可能にします。並列逐次スキャンは、逐次逐次スキャンとは対照的に、クエリ中に複数のワーカーを使用してリレーションを並行してスキャンします。
UNSAFE に 設定すると 、パラレルモードでは実行できません。このような関数がSQL文に存在すると、実行計画が強制的に実行されます。これは、 PARALLEL 句が省略された 場合のデフォルト設定です 。
RESTRICTED に 設定すると 、この関数はパラレルモードで実行できますが、実行はパラレルグループリーダーに制限されます。特定の関係の資格に並行制限があるものがあれば、その関係は並列性のために選択されません。
SAFE に 設定すると 、パラレルモードで機能を制限なく実行できます。
COST execution _ cost
execution _ cost is a positive number giving the estimated execution cost for the 関数の , in units of cpu _ operator _ cost . If the 機能 returns a set, this is the cost per returned row. Larger values cause the planner to try to avoid evaluating the 関数の returns a set, this is the cost per returned row. Larger values cause the planner to try to avoid evaluating the ます more often than necessary.
ROWS result _ rows
result _ rows is a positive number giving the estimated number of rows that the planner should expect the 関数 is a positive number giving the estimated number of rows that the planner should expect the です。 to return. This is only allowed when the 関数 is declared to return a set. The default assumption is 1000 rows.
SET configuration _ parameter { TO value | = value | FROM CURRENT }
SET 句は、場合 関数 指定された構成パラメータが指定された値に設定させます 関数が入力されると、その値に戻されます 終了します。 SET FROM CURRENT は、セッションの現在のパラメータ値を、 関数の実行 時に適用される値として保存し ます 入力されます。
場合 SET 句は 、その後の効果、機能 に取り付けられている。 SET 関数 内で実行される LOCAL コマンド 同じ変数に対しては関数に制限されています。構成パラメータの以前の値が関数で復元される 出口。通常の SET コマンド( LOCAL なし ) は、前の SET 場合と同じように SET 節を オーバーライドします 現在のトランザクションがロールバックされない限り、プロシージャの終了後にそのようなコマンドの効果が持続する LOCAL コマンド。
注: STRICT 、 LEAKPROOF 、 PARALLEL 、 COST 、 ROWS および SET キーワードはAdvanced Serverの拡張機能を提供し、Oracleではサポートされていません。
ノート
Advanced Serverでは、関数のオーバーロードが可能です。つまり、異なる入力関数( IN 、 IN OUT )引数データ型 を持つ限り、同じ名前を複数の異なる関数に使用でき ます。
例
関数 emp_comp は2つの数値を入力として取り、計算値を返します。 SELECT コマンドは、関数の使用例を示します。
CREATE OR REPLACE FUNCTION emp_comp (
p_sal NUMBER,
p_comm NUMBER
) RETURN NUMBER
IS
BEGIN
RETURN (p_sal + NVL(p_comm, 0)) * 24;
END;
SELECT ename "Name", sal "Salary", comm "Commission", emp_comp(sal, comm)
"Total Compensation" FROM emp;
Name | Salary | Commission | Total Compensation
--------+---------+------------+--------------------
SMITH | 800.00 | | 19200.00
ALLEN | 1600.00 | 300.00 | 45600.00
WARD | 1250.00 | 500.00 | 42000.00
JONES | 2975.00 | | 71400.00
MARTIN | 1250.00 | 1400.00 | 63600.00
BLAKE | 2850.00 | | 68400.00
CLARK | 2450.00 | | 58800.00
SCOTT | 3000.00 | | 72000.00
KING | 5000.00 | | 120000.00
TURNER | 1500.00 | 0.00 | 36000.00
ADAMS | 1100.00 | | 26400.00
JAMES | 950.00 | | 22800.00
FORD | 3000.00 | | 72000.00
MILLER | 1300.00 | | 31200.00
(14 rows)
関数 sal_range は、給与が指定された範囲内にある従業員の数のカウントを返します。次の無名ブロックは、引数の最初の2つの呼び出しのデフォルト値を使用して関数を何度も呼び出します。
CREATE OR REPLACE FUNCTION sal_range (
p_sal_min NUMBER DEFAULT 0,
p_sal_max NUMBER DEFAULT 10000
) RETURN INTEGER
IS
v_count INTEGER;
BEGIN
SELECT COUNT(*) INTO v_count FROM emp
WHERE sal BETWEEN p_sal_min AND p_sal_max;
RETURN v_count;
END;
BEGIN
DBMS_OUTPUT.PUT_LINE('Number of employees with a salary: ' ||
sal_range);
DBMS_OUTPUT.PUT_LINE('Number of employees with a salary of at least '
|| '$2000.00: ' || sal_range(2000.00));
DBMS_OUTPUT.PUT_LINE('Number of employees with a salary between '
|| '$2000.00 and $3000.00: ' || sal_range(2000.00, 3000.00));
END;
Number of employees with a salary: 14
Number of employees with a salary of at least $2000.00: 6
Number of employees with a salary between $2000.00 and $3000.00: 5
次の例は、 AUTHID 関数宣言の CURRENT_USER 句と STRICT キーワード:
CREATE OR REPLACE FUNCTION dept_salaries(dept_id int) RETURN NUMBER
STRICT
AUTHID CURRENT_USER
BEGIN
RETURN QUERY (SELECT sum(salary) FROM emp WHERE deptno = id);
END;
渡された入力パラメーターが NULL 場合 、サーバーに NULL を戻すように指示 する STRICT キーワードを 組み込み NULL 。場合 NULL 値が渡され、関数が実行されません。
dept _ salaries 関数は、関数を呼び出している役割の権限で実行されます。現在のユーザーに 、 (従業員の給与を表示 するために) emp 表を 照会する SELECT ステートメント を実行するための十分な特権がない場合、 関数はエラーを報告します。関数を定義したロールに関連付けられた権限を使用するようにサーバーに指示するには、 AUTHID AUTHID 持つ CURRENT _ USER 節 DEFINER 句。
プラグマ
PRAG MA RESTRICT_REFERENCE
Advanced Serverは受け入れますが、構文参照 pragma は無視します restrict _ reference 。
関連項目 DROP FUNCTION
CREATE INDEX - 新しいインデックスを定義する
CREATE [ UNIQUE ] INDEX name ON table
( { column | ( expression ) } )
[ TABLESPACE tablespace ]
CREATE INDEX は、指定された表の 索引 name 構成し ます。索引は主にデータベースのパフォーマンスを向上させるために使用されます(不適切な使用はパフォーマンスが低下します)。
注: 索引をパーティション表に作成することはできません。
索引のキー・フィールドは、列名、あるいはかっこで書かれた式として指定されます。複数のフィールドを指定すると、複数の列のインデックスを作成できます。
インデックスフィールドは、テーブル行の1つ以上の列の値から計算された式です。この機能を使用して、基本データの一部の変換に基づいてデータへの高速アクセスを取得できます。たとえば、 UPPER(col) 計算されたインデックス は、 WHERE UPPER(col) = 'JIM' という句で インデックスを使用できます。
Advanced Server は、Bツリーのインデックス方法を提供し ます 。 Bツリーインデックスメソッドは、Lehman-Yaoの高並列Bツリーの実装です。
索引は 、デフォルト で IS NULL 句に は使用されません 。
インデックス定義で使用されるすべての関数と演算子は、「不変」でなければなりません。つまり、結果は引数にのみ依存し、外部の影響(他のテーブルの内容や現在の時刻など)には依存しません。この制限により、索引の動作が適切に定義されます。インデックス式でユーザー定義関数を使用するには、関数を作成するときに関数を不変にすることを忘れないでください。
パラメーター
UNIQUE
索引が作成されたとき(データがすでに存在する場合)およびデータが追加されるたびに、システムが表内の重複値を検査するようにします。重複した結果となるデータを挿入または更新しようとすると、エラーが発生します。
name
作成する索引の名前。ここにはスキーマ名は含まれません。索引は常にその親表と同じスキーマに作成されます。
table
索引付けする表の名前(スキーマ修飾名)。
column
表内の列の名前。
expression
表の1つ以上の列に基づく式。式は通常、構文で示されているように、囲む括弧で書かれていなければなりません。ただし、式に関数呼び出しの形式がある場合は、かっこは省略することができます。
tablespace
索引を作成する表領域。指定しない場合、 default_tablespace 場合に使用、またはデータベースのデフォルトの表領域です default_tablespace 空の文字列です。
複数列の索引では、最大32のフィールドを指定できます。
列にB-treeインデックスを作成するには、 ename 、テーブルで、 emp :
CREATE INDEX name_idx ON emp (ename);
上記と同じインデックスを作成しますが、そのインデックスは index_tblspc テーブルスペース:
CREATE INDEX name_idx ON emp (ename) TABLESPACE index_tblspc;
関連項目
名
CREATE MATERIALIZED VIEW - 新しいマテリアライズド・ビューを定義する
シノプシス
CREATE MATERIALIZED VIEW name
[ build _ clause ][ create _ mv _ refresh ] AS subquery
どこ build _ clause 次のとおりです。
BUILD {IMMEDIATE | DEFERRED}
create _ mv _ refresh 次のとおりです。
REFRESH [COMPLETE] [ON DEMAND]
説明
CREATE MATERIALIZED VIEW は、クエリでビューが参照されるたびに更新されないクエリのビューを定義します。デフォルトでは、ビューが作成されるとビューに値が設定されます。あなたは BUILD を含めることができます DEFERRED キーワードを使用してビューの母集団を遅延させます。
マテリアライズド・ビューはスキーマで修飾されている場合があります。 CREATE を呼び出すときにスキーマ名を指定すると MATERIALIZED VIEW コマンドを実行すると、ビューは指定されたスキーマに作成されます。ビュー名は、同じスキーマ内の他のビュー、テーブル、シーケンス、またはインデックスの名前とは異なる名前でなければなりません。
パラメーター
name
作成されるビューの名前(スキーマ修飾名も可)
subquery
ビューの内容を指定 する SELECT ステートメント。 有効な照会の詳細については 、 SELECT を 参照してください 。
build_clause
含める build_clause ビューを移入する必要があるときに指定すると。 BUILD 指定する IMMEDIATE 、または BUILD DEFERRED :
・ BUILD IMMEDIATE は、サーバーにビューを直ちに移入するよう指示します。これがデフォルト動作です。
・ BUILD DEFERRED は、後で( REFRESH 操作中に) ビューを移入するようにサーバーに指示します 。
create_mv_refresh
マテリアライズド・ビューの内容をいつ更新するかを指定するには 、 create_mv_refresh 句を 含めます 。この句には、 REFRESH キーワードの後に COMPLETE および/または ON 続き ます DEMAND 、ここで:
・ COMPLETE は、現行のコンテンツを破棄し、マテリアライズド・ビューをリフレッシュするときにビューの定義問合せを実行して、マテリアライズド・ビューをリロードするようにサーバーに指示します。
・ ON DEMAND は、 DBMS _ MVIEW パッケージを呼び出すか、Postgres REFRESH 呼び出すことによって 、サーバーが要求に応じてマテリアライズド・ビューをリフレッシュするようにサーバーに指示します MATERIALIZED VIEW ステートメント。これがデフォルト動作です。
ノート
マテリアライズド・ビューは読取り専用です。サーバーはビューに対して INSERT 、 UPDATE または DELETE を 許可しません 。
ビューで参照されるテーブルへのアクセスは、ビュー所有者の権限によって決定されます。 ビューのユーザーは、ビューで使用されるすべての関数を呼び出すための権限を持っている必要があります。
Postgres REFRESH MATERIALIZED VIEW コマンドの詳細については、以下のPostgreSQLコアドキュメントを参照してください。
https://www.postgresql.org/docs/10/static/sql-refreshmaterializedview.html
例
次の文は、 dept_30 というマテリアライズド・ビューを作成します 。
CREATE MATERIALIZED VIEW dept_30 BUILD IMMEDIATE AS SELECT * FROM emp WHERE deptno = 30;
ビューには 、部門 30 で働く従業員に関する emp テーブル から取得された情報が含まれています 。
名
CREATE PACKAGE - 新しいパッケージ仕様を定義する
シノプシス
CREATE [ OR REPLACE ] PACKAGE name
[ AUTHID { DEFINER | CURRENT_USER } ]
{ IS | AS }
[ declaration ; ] [, ...]
[ { PROCEDURE proc_name
[ ( argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
[, ...]) ];
[ PRAGMA RESTRICT_REFERENCES( name ,
{ RNDS | RNPS | TRUST | WNDS | WNPS } [, ... ] ); ]
|
FUNCTION func_name
[ ( argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
[, ...]) ]
RETURN rettype [ DETERMINISTIC ];
[ PRAGMA RESTRICT_REFERENCES( name ,
{ RNDS | RNPS | TRUST | WNDS | WNPS } [, ... ] ); ]
}
] [, ...]
END [ name ]
説明
CREATE PACKAGE は新しいパッケージ仕様を定義します。 CREATE OR REPLACE PACKAGE は新しいパッケージ仕様を作成するか、既存の仕様を置き換えます。
スキーマ名が含まれている場合、パッケージは指定されたスキーマに作成されます。それ以外の場合は、現在のスキーマに作成されます。新しいパッケージの名前は、既存のパッケージの定義を更新する場合を除き、同じスキーマ内の既存のパッケージと一致していてはなりません(その場合は CREATE OR REPLACE PACKAGE 使用します) 。
プロシージャを作成するユーザーは、パッケージの所有者になります。
パラメーター
name
作成するパッケージの名前(スキーマ修飾名でも可)。
DEFINER | CURRENT_USER
パッケージ所有者( DEFINER )の権限またはパッケージ内のプログラムを実行している現行ユーザーの権限( CURRENT_USER )を使用して、パッケージで参照されるデータベース・オブジェクトへのアクセスが許可されているかどうかを指定します。 DEFINER がデフォルトです。
declaration
パブリック変数、型、カーソル、または REF CURSOR 宣言。
proc_name
パブリックプロシージャーの名前。
argname
引数の名前。
IN | IN OUT | OUT
引数モード。
argtype
プログラムの引数のデータ型。
DEFAULT value
入力引数のデフォルト値。
func_name
パブリック関数の名前。
rettype
戻り値のデータ型。
DETERMINISTIC
DETERMINISTIC は IMMUTABLEの 同義語です 。 DETERMINISTIC プロシージャは、データベースを変更し、同じ引数値を与えられた場合、常に同じ結果に達することができません。データベース参照を行わず、引数リストに直接存在しない情報を使用しません。この句を含めると、すべて定数の引数を持つプロシージャの呼び出しをすぐにプロシージャの値に置き換えることができます。
RNDS | RNPS | TRUST | WNDS | WNPS
キーワードは互換性のために受け入れられ、無視されます。
例
パッケージ仕様書 empinfo には、パブリック変数、パブリック・プロシージャ、パブリック関数の3つのパブリック・コンポーネントが含まれています。
CREATE OR REPLACE PACKAGE empinfo
IS
emp_name VARCHAR2(10);
PROCEDURE get_name (
p_empno NUMBER
);
FUNCTION display_counter
RETURN INTEGER;
END;
名
CREATE BODY PACKAGE - 新しいパッケージ本体を定義する
シノプシス
CREATE [ OR REPLACE ] PACKAGE BODY name
{ IS | AS }
[ declaration ; ] [, ...]
[ { PROCEDURE proc_name
[ ( argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
[, ...]) ]
[ STRICT ]
[ LEAKPROOF ]
[ PARALLEL { UNSAFE | RESTRICTED | SAFE } ]
[ COST execution_cost ]
[ ROWS result_rows ]
[ SET config_param { TO value | = value | FROM CURRENT } ]
{ IS | AS }
program_body
END [ proc_name ];
|
FUNCTION func_name
[ ( argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
[, ...]) ]
RETURN rettype [ DETERMINISTIC ]
[ STRICT ]
[ LEAKPROOF ]
[ PARALLEL { UNSAFE | RESTRICTED | SAFE } ]
[ COST execution_cost ]
[ ROWS result_rows ]
[ SET config_param { TO value | = value | FROM CURRENT } ]
{ IS | AS }
program_body
END [ func_name ];
}
] [, ...]
[ BEGIN
statement ; [, ...] ]
END [ name ]
説明
CREATE PACKAGE BODY は新しいパッケージ本体を定義します。 CREATE OR REPLACE PACKAGE BODY は、新しいパッケージ本体を作成するか、既存の本体を置き換えます。
スキーマ名が含まれている場合、指定されたスキーマにパッケージ本体が作成されます。それ以外の場合は、現在のスキーマに作成されます。新しいパッケージ本体の名前は、同じスキーマ内の既存のパッケージ仕様と一致する必要があります。新しいパッケージの本体名は、既存のパッケージ本体の定義を更新する場合を除いて、同じスキーマ内の既存のパッケージ本体と一致していてはなりません 。 その場合は CREATE OR REPLACE PACKAGE BODY 。
パラメーター
name
作成するパッケージ本体の名前(スキーマ修飾名でも可)。
declaration
専用変数、型、カーソル、または REF CURSOR 宣言。
proc_name
公開または非公開のプロシージャーの名前。 proc_name が同一の署名を持つパッケージ仕様に存在する 場合 、それはパブリックです。それ以外の場合はプライベートです。
argname
引数の名前。
IN | IN OUT | OUT
引数モード。
argtype
プログラムの引数のデータ型。
DEFAULT value
入力引数のデフォルト値。
STRICT
STRICT NULL 引数を指定して呼び出すと関数が実行されないように指定します ; instead the function will return NULL ; instead the function will return NULL .
LEAKPROOF
LEAKPROOF キーワードは、関数が戻り値を介する以外の引数、についての情報を明らかにしないことを指定します。
PARALLEL { UNSAFE | RESTRICTED | SAFE }
PARALLEL 句は、並列逐次走査(パラレルモード)の使用を可能にします。並列逐次スキャンは、逐次逐次スキャンとは対照的に、クエリ中に複数のワーカーを使用してリレーションを並行してスキャンします。
UNSAFE に 設定する と、プロシージャまたはファンクションをパラレルモードで実行できません。このようなプロシージャまたはファンクションが存在すると、連続した実行計画が強制されます。これは、 PARALLEL 句が省略された 場合のデフォルト設定です 。
RESTRICTED に 設定する と、プロシージャまたはファンクションはパラレル・モードで実行できますが、実行はパラレル・グループ・リーダに制限されます。特定の関係の資格に並行制限があるものがあれば、その関係は並列性のために選択されません。
SAFE に 設定する と、手続きまたは関数は制限なしで並列モードで実行できます。
execution_cost
execution_cost は、 cpu_operator_cost 単位で関数の推定実行コストを示す正の数を指定します 。関数がセットを返す場合、これは返される行あたりのコストです。デフォルトは 0.0025 です。
result_rows
result_rows は、クエリプランナが関数が返すと予想する行の推定数です。デフォルトは 1000 です。
SET
関数の持続時間のパラメータ値を指定 するには、 SET 句を 使用 します。
config_param は、パラメータ名を指定します。
value はパラメータ value 指定します。
FROM CURRENT は、関数の 終了 時にパラメーター値が復元されることを保証します 。
program_body
関数またはプロシージャーの本体を構成する宣言およびSPLステートメント。
宣言には、変数、型、 REF CURSOR 、またはサブプログラム の宣言が含まれます 。 サブプログラム宣言が含まれている場合は、他のすべての変数、型、および REF CURSOR 宣言の 後に宣言する必要があり REF CURSOR 。
func_name
パブリック関数またはプライベート関数の名前。 func_name が同一のシグネチャを持つパッケージ仕様に存在する 場合 、それはパブリックです。それ以外の場合はプライベートです。
rettype
戻り値のデータ型。
DETERMINISTIC
DETERMINISTIC を インクルードして 、同じ引数値が指定されたときに関数が常に同じ結果を返すように指定します。 DETERMINISTIC 関数は、データベースを変更してはなりません。
注: DETERMINISTIC キーワードは、PostgreSQLの IMMUTABLE オプション と同等 です。
注: パッケージ本体のパブリック関数に DETERMINISTIC が指定されている 場合 は、パッケージ仕様の関数宣言にも指定する必要があります。プライベート関数の場合、パッケージ仕様に関数宣言はありません。
statement
SPLプログラムのステートメント。パッケージ初期化セクションのステートメントは、パッケージが初めて参照されたときにセッションごとに1回実行されます。
注: STRICT 、 LEAKPROOF 、 PARALLEL 、 COST 、 ROWS および SET キーワードはAdvanced Serverの拡張機能を提供し、Oracleではサポートされていません。
例
以下は、 empinfo パッケージの パッケージ本体です 。
CREATE OR REPLACE PACKAGE BODY empinfo
IS
v_counter INTEGER;
PROCEDURE get_name (
p_empno NUMBER
)
IS
BEGIN
SELECT ename INTO emp_name FROM emp WHERE empno = p_empno;
v_counter := v_counter + 1;
END;
FUNCTION display_counter
RETURN INTEGER
IS
BEGIN
RETURN v_counter;
END;
BEGIN
v_counter := 0;
DBMS_OUTPUT.PUT_LINE('Initialized counter');
END;
以下の2つの無名ブロックは、 empinfo パッケージの プロシージャと関数を実行し 、public変数を表示します。
BEGIN
empinfo.get_name(7369);
DBMS_OUTPUT.PUT_LINE('Employee Name : ' || empinfo.emp_name);
DBMS_OUTPUT.PUT_LINE('Number of queries: ' || empinfo.display_counter);
END;
Initialized counter
Employee Name : SMITH
Number of queries: 1
BEGIN
empinfo.get_name(7900);
DBMS_OUTPUT.PUT_LINE('Employee Name : ' || empinfo.emp_name);
DBMS_OUTPUT.PUT_LINE('Number of queries: ' || empinfo.display_counter);
END;
Employee Name : JAMES
Number of queries: 2
名
CREATE PROCEDURE - 新しいストアドプロシージャを定義する
シノプシス
CREATE [ OR REPLACE ] PROCEDURE name [ ( parameters ) ]
[
IMMUTABLE
| STABLE
| VOLATILE
| DETERMINISTIC
| [ NOT ] LEAKPROOF
| CALLED ON NULL INPUT
| RETURNS NULL ON NULL INPUT
| STRICT
| [
EXTERNAL]セキュリティ・インボーカ
| [外部]セキュリティディフェンダー
| AUTHID DEFINER
| AUTHID CURRENT_USER
| PARALLEL { UNSAFE | RESTRICTED | SAFE }
| COST execution _ cost
| ROWS result _ rows
| SET configuration _ parameter
{ TO value | = value | FROM CURRENT }
...]
{ IS | AS }
[ declarations ]
BEGIN
statements
END [ name ];
説明
CREATE PROCEDURE は、新しいストアド・プロシージャーを定義します。 CREATE OR REPLACE PROCEDURE は、新しいプロシージャを作成するか、既存の定義を置き換えます。
スキーマ名が含まれている場合、プロシージャーは指定されたスキーマに作成されます。それ以外の場合は、現在のスキーマに作成されます。新しいプロシージャの名前は、既存のプロシージャの定義を更新する場合を除き、同じスキーマ内の既存のプロシージャと一致していてはなりません 。 その場合は CREATE OR REPLACE PROCEDURE 使用します 。
パラメーター
name
name はプロシージャの識別子です。 [OR REPLACE] 句 を指定 し、同じ名前のプロシージャがスキーマにすでに存在する場合は、新しいプロシージャが既存のプロシージャを置き換えます。 [OR REPLACE] 指定しない場合 、新しいプロシージャは既存のプロシージャを同じスキーマ内の同じ名前に置き換えません。
parameters
parameters は仮パラメータのリストです。
declarations
declarations は、変数、カーソル、型、または副プログラムの宣言です。サブプログラム宣言が含まれている場合は、他のすべての変数宣言、カーソル宣言、および型宣言の後に宣言する必要があります。
statements
statements は SPL プログラムステートメントです( BEGIN - END ブロックには EXCEPTION セクション が含まれる場合があります )。
IMMUTABLE
STABLE
VOLATILE
これらの属性は、問合せオプティマイザにプロシージャの動作を通知します。 1つの選択肢しか指定できません。 VOLATILE はデフォルトの動作です。
IMMUTABLE は、プロシージャーがデータベースを変更できず、同じ引き数値が与えられたときに常に同じ結果に達することを示します。データベース参照を行わず、引数リストに直接存在しない情報を使用しません。この句を含めると、すべて定数の引数を持つプロシージャの呼び出しをすぐにプロシージャの値に置き換えることができます。
STABLE は、プロシージャーがデータベースを変更できず、単一の表スキャン内で、同じ引き数値に対して同じ結果を一貫して戻しますが、結果がSQLステートメントで変更される可能性があることを示します。これは、データベースルックアップ、パラメータ変数(現在のタイムゾーンなど)に依存するプロシージャの適切な選択です。
VOLATILE は、単一の表スキャン内でもプロシージャ値が変更可能であるため、最適化を実行できないことを示します。副作用のある関数は、呼び出しが最適化されないように、結果がかなり予測可能であっても、揮発性に分類されなければならないことに注意してください。
決定的
DETERMINISTIC は IMMUTABLEの 同義語です 。 DETERMINISTIC プロシージャは、データベースを変更し、同じ引数値を与えられた場合、常に同じ結果に達することができません。データベース参照を行わず、引数リストに直接存在しない情報を使用しません。この句を含めると、すべて定数の引数を持つプロシージャの呼び出しをすぐにプロシージャの値に置き換えることができます。
[NOT] LEAKPROOF
LEAKPROOK 手順は、副作用がなく、プロシージャを呼び出すために使用される値に関する情報を明らかにしません。
NULL入力で呼び出される
ヌル入力でNULLを返す
STRICT
呼び出される に ヌル INPUT (デフォルト)は、引数の一部が NULLの 場合にプロシージャが正常に呼び出されることを示し ます 。 必要に応じ て NULL 値 をチェックし、 適切に応答するの は作者の責任 です。
戻り値 ヌル に ヌル INPUT または STRICT は 、その引数のいずれか が NULL の場合は必ずプロシージャが NULL を返すことを示し ます 。これらの句が指定されている場合、 NULL 引数 がある場合はプロシージャは実行されません 。代わりに NULL という結果が自動的想定されます。
[ EXTERNAL ] SECURITY DEFINER
SECURITY DEFINER は、プロシージャを作成したユーザーの権限でプロシージャを実行するように指定します。これがデフォルトです。キーワード EXTERNAL はSQL準拠には使用できますが、オプションです。
[ EXTERNAL ] SECURITY INVOKER
SECURITY INVOKER 句は、プロシージャがそれを呼び出すユーザの権限で実行されることを示します。キーワード EXTERNAL はSQL準拠には使用できますが、オプションです。
AUTHID DEFINER
AUTHID CURRENT_USER
AUTHID DEFINER 句は、 [EXTERNAL] 同義語です [EXTERNAL] SECURITY DEFINER 。もし AUTHID 句が省略された場合、または AUTHID DEFINER が指定されている場合は、プロシージャ所有者の権限を使用してデータベース・オブジェクトへのアクセス権限が決定されます。
AUTHID CURRENT_USER 句は、 [EXTERNAL] 同義語です [EXTERNAL] SECURITY INVOKER 。 AUTHID 場合 CURRENT_USER が指定されている場合、プロシージャを実行している現行ユーザーの権限を使用してアクセス権限が決定されます。
PARALLEL { UNSAFE | RESTRICTED | SAFE }
PARALLEL 句は、並列逐次走査(パラレルモード)の使用を可能にします。並列逐次スキャンは、逐次逐次スキャンとは対照的に、クエリ中に複数のワーカーを使用してリレーションを並行してスキャンします。
UNSAFE に 設定すると 、パラレルモードでは実行できません。このような手順が存在すると、シリアル実行計画が強制されます。これは、 PARALLEL 句が省略された 場合のデフォルト設定です 。
RESTRICTED に 設定する と、プロシージャはパラレルモードで実行できますが、実行はパラレルグループリーダーに制限されます。特定の関係の資格に並行制限があるものがあれば、その関係は並列性のために選択されません。
SAFE に 設定されている場合 、プロシージャは制限なしでパラレルモードで実行できます。
COST execution _ cost
execution _ cost is a positive number giving the estimated execution cost for the procedure, in units of cpu _ operator _ cost . If the procedure returns a set, this is the cost per returned row. Larger values cause the planner to try to avoid evaluating the function more often than necessary.
ROWS result _ rows
result _ rows is a positive number giving the estimated number of rows that the planner should expect the procedure to return. This is only allowed when the procedure is declared to return a set. The default assumption is 1000 rows.
SET configuration _ parameter { TO value | = value | FROM CURRENT }
SET 句は、指定された設定パラメータは、手順が入力されると、指定された値に設定され、その前の値場合の処理手順が終了に復帰させます。 SET FROM CURRENT は、プロシージャーに入ったときに適用される値として、セッションの現行のパラメーター値を CURRENT します。
場合 SET 句は、その後の効果、手続きに取り付けられている。 SET 同じ変数のプロシージャー内で実行される LOCAL コマンドは、プロシージャーに限定されています。プロシージャ出口で構成パラメータの事前値がリストアされます。通常の SET コマンド( LOCAL なし ) は、前の SET 場合と同じように SET 節を オーバーライドします 現在のトランザクションがロールバックされない限り、プロシージャの終了後にそのようなコマンドの効果が持続する LOCAL コマンド。
注: STRICT 、 LEAKPROOF 、 PARALLEL 、 COST 、 ROWS および SET キーワードはAdvanced Serverの拡張機能を提供し、Oracleではサポートされていません。
例
次の手順では、 emp テーブルの 従業員を一覧表示し ます。
CREATE OR REPLACE PROCEDURE list_emp
IS
v_empno NUMBER(4);
v_ename VARCHAR2(10);
CURSOR emp_cur IS
SELECT empno, ename FROM emp ORDER BY empno;
BEGIN
OPEN emp_cur;
DBMS_OUTPUT.PUT_LINE('EMPNO ENAME');
DBMS_OUTPUT.PUT_LINE('----- -------');
LOOP
FETCH emp_cur INTO v_empno, v_ename;
EXIT WHEN emp_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_empno || ' ' || v_ename);
END LOOP;
CLOSE emp_cur;
END;
EXEC list_emp;
EMPNO ENAME
----- -------
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
次のプロシージャは、 IN OUT および OUT 引数を使用して、最初に指定した従業員番号を使用した検索に基づいて従業員の番号、名前およびジョブを戻し、見つからない場合は指定された名前を使用します。無名ブロックが手続きを呼び出します。
CREATE OR REPLACE PROCEDURE emp_job (
p_empno IN OUT emp.empno%TYPE,
p_ename IN OUT emp.ename%TYPE,
p_job OUT emp.job%TYPE
)
IS
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_job emp.job%TYPE;
BEGIN
SELECT ename, job INTO v_ename, v_job FROM emp WHERE empno = p_empno;
p_ename := v_ename;
p_job := v_job;
DBMS_OUTPUT.PUT_LINE('Found employee # ' || p_empno);
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
SELECT empno, job INTO v_empno, v_job FROM emp
WHERE ename = p_ename;
p_empno := v_empno;
p_job := v_job;
DBMS_OUTPUT.PUT_LINE('Found employee ' || p_ename);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Could not find an employee with ' ||
'number, ' || p_empno || ' nor name, ' || p_ename);
p_empno := NULL;
p_ename := NULL;
p_job := NULL;
END;
END;
DECLARE
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_job emp.job%TYPE;
BEGIN
v_empno := 0;
v_ename := 'CLARK';
emp_job(v_empno, v_ename, v_job);
DBMS_OUTPUT.PUT_LINE('Employee No: ' || v_empno);
DBMS_OUTPUT.PUT_LINE('Name : ' || v_ename);
DBMS_OUTPUT.PUT_LINE('Job : ' || v_job);
END;
Found employee CLARK
Employee No: 7782
Name : CLARK
Job : MANAGER
次の例は、 AUTHID プロシージャ宣言の DEFINER および SET 句 update _ salary 手順は(手順の実行中)プロシージャを呼び出している役割に手順を定義したロールの権限を伝えます :
CREATE OR REPLACE PROCEDURE update_salary(id INT, new_salary NUMBER)
SET SEARCH_PATH = 'public' SET WORK_MEM = '1MB'
AUTHID DEFINER IS
BEGIN
UPDATE emp SET salary = new_salary WHERE emp_id = id;
END;
プロシージャの検索パスを public に、ワークメモリを 1MB に設定するに は、 SET 句を 含めます 。他のプロシージャ、関数、およびオブジェクトは、これらの設定の影響を受けません。
この例では、 AUTHID DEFINER 句は、プロシージャ内の文の実行を許可されないロールに一時的に権限を付与します。プロシージャを呼び出すロールに関連付けられた権限を使用するようにサーバーに指示するには、 AUTHID AUTHID 持つ DEFINER 句 CURRENT _ USER 節。
関連項目
名
CREATE PROFILE - 新しいプロファイルを作成する
シノプシス
CREATE PROFILE profile_name
[LIMIT { parameter value } ... ];
説明
CREATE PROFILE は新しいプロファイルを作成します。 Advanced Serverによって実行されるルールを指定するには 、 LIMIT 句と1つ以上のスペース区切り parameter / value ペアを 含め ます。
Advanced Serverは DEFAULT という名前のデフォルトプロファイルを作成します 。 CREATE を使用すると ROLE コマンドを使用して新しいロールを作成すると、新しいロールは自動的に DEFAULT プロファイルに 関連付けられ ます。 以前のバージョンのAdvanced ServerからAdvanced Server 10にアップグレードすると、アップグレードプロセスによって、アップグレードされたバージョンのロールが DEFAULT プロファイルに 自動的に作成され ます。
CREATE を使用するには、スーパーユーザーでなければなりません lang = EN-US> PROFILE 。
Advanced Serverによって実行されるルールを指定するには 、 LIMIT 句と1つ以上のスペース区切り parameter / value ペアを 含め ます。
パラメーター
profile_name
プロファイルの名前。
parameter
password attribute that will be monitored by the rule.
value
must reach before an action is taken by the server. parameter must reach before an action is taken by the server. value the must reach before an action is taken by the server.
Advanced Serverは、 各 parameter について以下 の value サポートしてい parameter 。
FAILED_LOGIN_ATTEMPTS は、サーバーが PASSWORD_LOCK_TIME 指定された時間、アカウントからユーザーをロックする前に、ユーザーが失敗したログイン試行の回数を指定します 。サポートされる値は次のとおりです。
· An INTEGER value greater than 0 .
· DEFAULT - the value of DEFAULT profile. specified in the FAILED_LOGIN_ATTEMPTS - the value of profile.
· UNLIMITED – the connecting user may make an unlimited number of failed login attempts.
PASSWORD_LOCK_TIME specifies the length of time that must pass before the server unlocks an account that has been locked because of FAILED_LOGIN_ATTEMPTS. specifies the length of time that must pass before the server unlocks an account that has been locked because of FAILED_LOGIN_ATTEMPTS. サポートされる値は次のとおりです。
・ 0 以上 の NUMERIC 。 1日の小数部分を指定するには、小数値を指定します。たとえば、値 4.5 を 使用して 4 日 12 時間 を指定します 。
・ DEFAULT - DEFAULT プロファイルで 指定された PASSWORD_LOCK_TIME の値 。
・ UNLIMITED – アカウントはデータベーススーパーユーザーによって手動でロック解除されるまでロックされます。
PASSWORD_LIFE_TIME は、ユーザーに新しいパスワードを入力する前に現在のパスワードを使用する日数を指定します。 PASSWORD _ LIFE _ TIME 句を 使用する場合 は、 PASSWORD _ GRACE _ TIME 句を 含めて 、ロールによる接続が拒否されるまでにパスワードが期限切れになってから経過する日数を指定します。場合 PASSWORD _ GRACE _ TIME 指定されていない場合、パスワードはデフォルト値で指定された日に期限切れになります PASSWORD _ GRACE _ TIME 、およびユーザーは、新しいパスワードが提供されるまでの任意のコマンドを実行することはできません。サポートされる値は次のとおりです。
· 0 value greater than or equal to A NUMERIC . 1日の小数部分を指定するには、小数値を指定します。たとえば、値 4.5 を 使用して 4 日 12 時間 を指定します 。
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_LIFE_TIME - the value of profile.
· UNLIMITED – The password does not have an expiration date.
PASSWORD_GRACE_TIME ユーザーが自分のパスワードを変更するように強制されるまで、パスワードの有効期限が切れた後 の猶予 期間の長さをpecifies。猶予期間が切れると、ユーザーは接続を許可されますが、期限切れのパスワードを更新するまでコマンドを実行することはできません 。サポートされる値は次のとおりです。
・ 0 value greater than or equal to A NUMERIC . 1日の小数部分を指定するには、小数値を指定します。たとえば、値 4.5 を 使用して 4 日 12 時間 を指定します 。
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_GRACE_TIME - the value of profile.
· UNLIMITED – The grace period is infinite.
PASSWORD_REUSE_TIME は 、ユーザーが パスワードを 再 使用する まで待機する日数を 指定 し ます。 PASSWORD _ REUSE _ TIME と PASSWORD _ REUSE _ MAX パラメータを一緒に使用することが意図されています。これらのパラメータの1つに有限値を指定し、他のパラメータを UNLIMITED 、古いパスワードを決して再利用することはできません。両方のパラメータが UNLIMITED に 設定されている場合は 、パスワードの再利用に制限はありません。サポートされる値は次のとおりです。
· 0 value greater than or equal to A NUMERIC . 1日の小数部分を指定するには、小数値を指定します。たとえば、値 4.5 を 使用して 4 日 12 時間 を指定します 。
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_REUSE_TIME - the value of profile.
· UNLIMITED – The password can be re-used without restrictions.
PASSWORD_REUSE_MAX は 、パスワードを再利用できるようにするために必要なパスワードの変更回数を 指定 します。 PASSWORD _ REUSE _ TIME と PASSWORD _ REUSE _ MAX パラメータを一緒に使用することが意図されています。これらのパラメータの1つに有限値を指定し、他のパラメータを UNLIMITED 、古いパスワードを決して再利用することはできません。両方のパラメータが UNLIMITED に 設定されている場合は 、パスワードの再利用に制限はありません。サポートされる値は次のとおりです。
· 0 value greater than or equal to An INTEGER value greater than or equal to .
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_REUSE_MAX - the value of profile.
· UNLIMITED – The password can be re-used without restrictions.
PASSWORD_VERIFY_FUNCTION はパスワードの複雑さを指定します。サポートされる値は次のとおりです。
・ The name of a PL/SQL function.
· DEFAULT - the value of DEFAULT profile. specified in the PASSWORD_VERIFY_FUNCTION - the value of profile.
· NULL
ノート
DROP 使用する PROFILE コマンドを使用してプロファイルを削除します。
例
次のコマンドは、 style = 'font-size:11.0pt'> acctg 。このプロファイルでは、ユーザーが5回の試行で正しいパスワードで認証されなかった場合、アカウントは1日ロックされます。
CREATE PROFILE acctg LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1;
次のコマンドは、 sales という名前のプロファイルを作成します 。プロファイルでは、90日ごとにパスワードを変更する必要があることを指定しています。
CREATE PROFILE sales LIMIT
PASSWORD_LIFE_TIME 90
PASSWORD_GRACE_TIME 3;
プロファイルで指定された90日が経過する前にユーザーがパスワードを変更していない場合は、ログイン時に警告が表示されます。 3日間の猶予期間が経過すると、パスワードを変更するまでアカウントのコマンドを呼び出すことができなくなります。
次のコマンドは、 accts という名前のプロファイルを作成します 。このプロファイルでは、パスワードを最後に使用してから180日以内にパスワードを再使用できないように指定しており、パスワードを再使用する前に少なくとも5回パスワードを変更する必要があります。
CREATE PROFILE accts LIMIT
PASSWORD_REUSE_TIME 180
PASSWORD_REUSE_MAX 5;
次のコマンドは、 resources という名前のプロファイルを作成します 。プロファイルは、指定された password_rules が複雑さの基準を満たしていることを確認する password_rules という 名前のユーザー定義関数を呼び出し ます。
CREATE PROFILE resources LIMIT
PASSWORD_VERIFY_FUNCTION password_rules;
Advanced Serverには、 CREATE QUEUE SQL コマンドで 追加の構文(Oracleでは提供されていません)が含まれています 。この構文は、 DBMS_AQADM に関連して使用でき ます 。
名
CREATE QUEUE - キューを作成します。
シノプシス
CREATE 使用 新しいキューを定義するための QUEUE :
CREATE QUEUE name QUEUE TABLE キュー _ テーブル _ 名前 [({ オプション _ 名前 オプション _ 値 } [、...])]
どこで option _ name および 対応する option_value 次のようになります。
TYPE [normal_queue | exception_queue]
戻り値[INTEGER]
再試行[ダブルプレシジョン]
留意事項[ダブルプレシジョン]
説明
CREATE QUEUE コマンドを使用すると、データベースのスーパーユーザーまたはシステム定義の aq _ administrator _ role 特権を 持つ任意のユーザー が、現在のデータベースに新しいキューを作成できます。
キューの名前がスキーマで修飾されている場合、キューは指定されたスキーマに作成されます。スキーマが CREATE 含まれていない場合 QUEUE コマンドを実行すると、現在のスキーマにキューが作成されます。キューは、そのキュー・テーブルが存在するスキーマ内にのみ作成できます。キューの名前は、同じスキーマ内の他のキューの名前と一意でなければなりません。
DROP 使用する QUEUE を削除するための QUEUE 。
パラメーター
name
作成されるキューの名前(スキーマ修飾名でも可)。
queue_table_name
このキューが関連付けられているキューテーブルの名前。
option_name option_value
新しいキューに関連付けられるオプションの名前と、オプションに対応する値。 CREATE への呼び出し QUEUE に重複するオプション名が含まれていると、サーバーはエラーを返します。次の値がサポートされています。
TYPE | 指定 normal _ queue キューが通常のキュー、またはであることを示すために exception _ queue キューが例外キューであることを示すために。例外キューは、デキュー操作のみを受け入れます。 |
RETRIES | キューからメッセージを削除する最大試行回数を指定 する INTEGER 値。 |
RETRYDELAY | DOUBLE メッセージが再試行される前にサーバーが待機 する ROLLBACK 後の秒数を指定する PRECISION 値 。 |
RETENTION | A デキューした後にメッセージがキュー表に保存される秒数を指定する PRECISION 値。 |
例
次のコマンドは、キューの名前を作成 work_order という名前のキュー表に関連付けられている work_order_table :
CREATE QUEUE work_order QUEUE TABLE work_order_table (RETRIES 5, RETRYDELAY 2);
サーバーは、キューからメッセージを削除する5回の試行を許可し、試行の間に2秒の再試行遅延を強制します。
関連項目
ALTER QUEUE 、 DROP QUEUE
Advanced Serverには、 CREATE QUEUE TABLE SQL コマンドで 追加の構文(Oracleでは提供されていません)が含まれています 。この構文は、 DBMS_AQADM に関連して使用でき ます 。
名
CREATE QUEUE TABLE - 新しいキュー表を作成します。
シノプシス
CREATE QUEUE 使用する 新しいキューテーブルを定義する TABLE :
CREATE QUEUE TABLE name of type _ name [({ オプション _ 名前 オプション _ 値 } [、...])]
オプション _ 名 とそれに対応するoption_valueが できる 場所 :
option_name | option_value |
SORT_LIST | priority, enq_time |
MULTIPLE_CONSUMERS | FALSE, TRUE |
MESSAGE_GROUPING | NONE, TRANSACTIONAL |
STORAGE_CLAUSE | TABLESPACE tablespace _ name , PCTFREE integer, PCTUSED integer, INITRANS integer, MAXTRANS integer, STORAGE storage_option どこに storage _ option 、次のうちの1つ以上であります: MINEXTENTS integer, MAXEXTENTS integer, PCTINCREASE integer, INITIAL size _ clause , NEXT, FREELISTS integer, OPTIMAL size _ clause , BUFFER_POOL {KEEP|RECYCLE|DEFAULT}. |
説明
CREATE QUEUE TABLE スーパーユーザーまたはを持つユーザーことができます aq _ administrator _ role 権限は、新しいキュー表を作成します。
CREATE への呼び出し QUEUE TABLE にはスキーマ名が含まれ、キュー表は指定されたスキーマに作成されます。スキーマ名が指定されていない場合は、新しいキュー表が現行スキーマに作成されます。
キュー表の名前は、同じスキーマ内の他のキュー表の名前と一意でなければなりません。
パラメーター
name
新しいキュー表の名前(スキーマ修飾名も可)。
type_name
キュー・テーブルの各エントリのペイロードを記述する既存のタイプの名前。型の定義については、「 CREATE 」を参照してください。 TYPE 。
option_name option_value
新しいキュー表に関連付けられるオプションの名前と、オプションに対応する値。 CREATE への呼び出し QUEUE TABLE に重複するオプション名が含まれていると、サーバーはエラーを返します。受け入れられる値は次のとおりです。
SORT_LIST | 使用 キューのデキュー順序を制御するには、 SORT _ LIST オプションを使用します。キューをソートするために使用される列の名前を昇順で指定します。現在受け入れられている値は、次の組み合わせです enq _ time と priority : enq _ time 。 priority priority 。 enq _ time priority enq _ time それ以外の値はエラーを返します。 |
MULTIPLE_CONSUMERS | BOOLEAN メッセージは、複数の消費者(持つことができるかどうかを示す値 TRUE )、またはメッセージ(ごとに消費者に制限されて FALSE )。 |
MESSAGE _ GROUPING | 各メッセージを個別にデキューする必要があることを示す場合は none を 指定し 、 transactional の結果としてキューに追加されるメッセージはグループとしてデキューする必要があることを示すために transactional を指定します。 |
STORAGE_CLAUSE | STORAGE _ CLAUSE を 使用 して、表属性を指定します。 STORAGE _ CLAUSE あってもよい TABLESPACE tablespace _ name , PCTFREE integer, PCTUSED integer, INITRANS integer, MAXTRANS integer, STORAGE storage_option どこに storage _ option 、次のうちの1つ以上であります: MINEXTENTS integer, MAXEXTENTS integer, PCTINCREASE integer, INITIAL size _ clause , NEXT, FREELISTS integer, OPTIMAL size _ clause , BUFFER_POOL {KEEP|RECYCLE|DEFAULT}. |
例
キュー表を作成する前に、ユーザー定義型を作成する必要があります。この型は、表内の列とデータ型を記述します。次のコマンドは、 work _ order という名前の型を作成します 。
CREATE TYPE work_order AS (name VARCHAR2, project TEXT, completed BOOLEAN);
次のコマンドは、使用して work _ order という名前のキュー表を作成するタイプを work_order_table :
CREATE QUEUE TABLE work_order_table OF work_order (sort_list (enq_time, priority));
関連項目
ALTER QUEUE TABLE 、 DROP QUEUE TABLE
CREATE ROLE - 新しいデータベースロールを定義する
CREATE ROLE name [IDENTIFIED BY password [REPLACE old_password ] ]
CREATE ROLE は、 Advanced Serverデータベース・クラスタに新しいロールを追加します。ロールは、データベースオブジェクトを所有し、データベース権限を持つことができるエンティティです。役割は、その使用方法に応じて、「ユーザー」、「グループ」、またはその両方とみなすことができます。新しく作成されたロールには LOGIN 属性がないため、セッションを開始するために使用することはできません。 ALTER 使用する ROLE 役割を与えるために、コマンド LOGIN 権利を。 CREATE ROLE コマンド を使用するには、 CREATEROLE 権限 が必要 CREATEROLE 。
場合は IDENTIFIED BY 句が指定されている、 CREATE ROLE コマンドもが所有するスキーマを作成し、新しく作成された役割と同じ名前を持ちます。
ロールはデータベースクラスタレベルで定義されるため、クラスタ内のすべてのデータベースで有効です。
name
新しいロールの名前。
IDENTIFIED BY password
役割のパスワードを設定します。 (パスワードは、 LOGIN 属性 を持つロールに対してのみ使用されますが、パスワード なしでロールにもパスワードを定義できます)。パスワード認証を使用しない場合は、このオプションを省略できます。
ALTER 使用する ROLE の属性を変更する ROLE 、ロールの属性を変更する DROP ROLE を削除する ROLE CREATE ROLE 指定された属性は、 後の ALTER ROLE コマンドで 変更でき ます。
GRANT 使用する REVOKE を使用して、グループとして使用されているロールのメンバーを追加および削除します。
ロール名とパスワードの最大長制限は63文字です。
admins という名前のロール(およびスキーマ)を パスワードとともに作成します。
CREATE ROLE admins IDENTIFIED BY Rt498zb;
ALTER ROLE 、 DROP ROLE 、 GRANT 、 REVOKE 、 SET ROLE
名
CREATE SCHEMA - 新しいスキーマを定義する
シノプシス
CREATE SCHEMA AUTHORIZATION username schema_element [ ... ]
説明
CREATE SCHEMA コマンドの このバリエーションは、 username が所有する新しいスキーマを作成し、 1つ以上のオブジェクトで 作成され ます。スキーマとオブジェクトの作成は、単一のトランザクション内で行われるため、すべてのオブジェクトが作成されるか、スキーマを含めて作成されません。 ( ご注意 :Oracleデータベースを使用している場合は、新しいスキーマが作成されていない- username 、およびそのためのスキーマを、事前に存在している必要があります。)
スキーマは基本的に名前空間です。名前は、他のスキーマに存在する他のオブジェクトの名前と重複する名前のオブジェクト(テーブル、ビューなど)を含みます。名前付きオブジェクトは、スキーマ名を接頭辞として名前を「修飾」するか、目的のスキーマを含む検索パスを設定することによってアクセスされます。非修飾オブジェクトは、現在のスキーマ(検索パスの前にあるもの、 CURRENT_SCHEMA 関数で判別できます )に作成されます。 (検索パスの概念と CURRENT_SCHEMA 関数はOracleデータベースと互換性がありません)。
CREATE SCHEMA は、スキーマ内にオブジェクトを作成するためのサブコマンドが含まれています。サブコマンドは、スキーマの作成後に発行される別々のコマンドと本質的に同じように扱われます。作成されたすべてのオブジェクトは、指定されたユーザーが所有します。
パラメーター
username
新しいスキーマを所有するユーザーの名前。スキーマの名前は username と同じになり username 。スーパーユーザーだけが自分以外のユーザーが所有するスキーマを作成することができます。 ( ご注意 :Advanced Serverには役割は、 username 、すでに存在している必要がありますが、スキーマが存在してはならないオラクルでは、ユーザが(同等に、スキーマ)が存在している必要があります。)
schema_element
スキーマ内で作成されるオブジェクトを定義するSQLステートメント。 CREATE TABLE 、 CREATE VIEW 、および GRANT は 、 CREATE SCHEMA 内の句として受け入れられ ます。スキーマの作成後、別の種類のオブジェクトが別々のコマンドで作成されることがあります。
ノート
スキーマを作成するには、起動するユーザー が現行データベースの CREATE 特権を 持っている必要があり ます。 (もちろん、スーパーユーザはこのチェックをバイパスします。)
Advanced Serverには 、Oracleデータベースと互換性のない 他の形式の CREATE SCHEMA コマンドがあります 。
例
CREATE SCHEMA AUTHORIZATION enterprisedb
CREATE TABLE empjobs (ename VARCHAR2(10), job VARCHAR2(9))
CREATE VIEW managers AS SELECT ename FROM empjobs WHERE job = 'MANAGER'
GRANT SELECT ON managers TO PUBLIC;
CREATE SEQUENCE - 新しいシーケンスジェネレータを定義する
CREATE SEQUENCE name [ INCREMENT BY increment ]
[ { NOMINVALUE | MINVALUE minvalue } ]
[ { NOMAXVALUE | MAXVALUE maxvalue
[ START WITH start ] [ CACHE cache | NOCACHE ] [ CYCLE ] CREATE SEQUENCE は新しいシーケンス番号ジェネレータを作成します。これには、名前、 name 新しい特別な単一行テーブルの作成と初期化が含まれます 。ジェネレータは、コマンドを発行したユーザが所有します。 スキーマ名が指定されている場合は、指定されたスキーマにシーケンスが作成されます。そうでない場合は、現在のスキーマに作成されます。シーケンス名は、同じスキーマ内の他のシーケンス、表、索引、またはビューの名前とは異なるものでなければなりません。 シーケンスが作成された後、 NEXTVAL および CURRVAL ファンクションを使用 してシーケンスを操作します。これらの関数については、 2.4.9 。 name 作成するシーケンスの名前(スキーマ修飾名も可) increment オプションの節 INCREMENT BY increment は、現在のシーケンス値に追加する値を指定して新しい値を作成します。正の値は昇順のシーケンスを、負の値は降順のシーケンスを作成します。デフォルト値は1です。 NOMINVALUE | MINVALUE minvalue オプションの節 MINVALUE minvalue は、シーケンスが生成できる最小値を決定します。この節が指定されていない場合、デフォルトが使用されます。昇順と降順のそれぞれのデフォルトは1と-2 63 -1です。キーワード NOMINVALUE 使用して、この動作をデフォルトに設定することができます。 NOMAXVALUE | MAXVALUE maxvalue オプション節 MAXVALUE maxvalue は、シーケンスの最大値を決定します。この句を指定しないと、デフォルト値が使用されます。昇順および降順のそれぞれのデフォルトは2 63 -1および-1です。キーワード NOMAXVALUE 使用して、この動作をデフォルトに設定することができます。 start オプション節 START WITH start は、シーケンスがどこからでも start できるようにします。デフォルトの開始値は minvalue 昇順シーケンスとのため maxvalue ものを降順ため。 cache オプションの CACHE 節 cache は、より早くアクセスできるように、事前割り当てされ、メモリに格納されるシーケンス番号の数を指定します。最小値は1です(一度に生成できる値は NOCACHE )。これもデフォルトです。 CYCLE CYCLE オプションは、ときシーケンスはラップアラウンドすることを可能にする maxvalue または minvalue 昇順で到達したか、それぞれ降順されています。限界に達した場合、生成された次数があろう minvalue または maxvalue それぞれ。 場合 CYCLE (デフォルト)省略されている、への呼び出し NEXTVAL シーケンスの後は、その最大値はエラーを返します達しています。キーワード NO CYCLE 使用してデフォルトの動作を得ることができますが、この用語はOracleデータベースと互換性がありません。 シーケンスは大きな整数演算に基づいているため、範囲は8バイト整数(-9223372036854775808〜9223372036854775807)の範囲を超えることはできません。いくつかの古いプラットフォームでは、8バイト整数に対するコンパイラのサポートがない場合があります。この場合、シーケンスでは通常の INTEGER 演算(-2147483648〜+ 2147483647の範囲)が 使用さ れます。 複数のセッションで同時に使用されるシーケンスオブジェクトに1より大きい cache 設定を使用すると、 予期しない結果が得られる ことがあります。各セッションは、シーケンスオブジェクトへの1回のアクセス中に連続したシーケンス値を割り当ててキャッシュし、それに応じてシーケンスオブジェクトの最終値を増加させます。次に、 そのセッション内 の次の cache -1の NEXTVAL 使用は 、シーケンスオブジェクトに触れることなく、事前に割り当てられた値を単に返すだけです。したがって、セッション内で割り当てられているが使用されていない番号は、そのセッションが終了すると失われ、その結果、シーケンスに「穴」が生じます。 さらに、複数のセッションが別個のシーケンス値を割り当てることが保証されているが、すべてのセッションが考慮されるとき、値はシーケンス外で生成されてもよい。たとえば、 cache 設定が10の場合、セッションAは値1..10を予約して NEXTVAL = 1 を返し 、セッションBは値11..20を予約し、 セッションAが NEXTVAL = 2 を生成する前に NEXTVAL = 11 を戻し NEXTVAL 。したがって、 cache 設定が1の場合、 NEXTVAL 値が順次生成される と仮定することは安全 です。で cache 1より大きいを設定あなただけのことを想定する必要があり NEXTVAL 値が、彼らは純粋に順次生成されていないことを、すべて異なっています。また、最後の値は、 NEXTVAL によってまだ戻されているかどうかに関係なく、どのセッションでも予約されている最新の値を反映し NEXTVAL 。 101から始まる serial という昇順を作成します 。 CREATE SEQUENCE serial START WITH 101; このシーケンスから次の番号を選択します。 SELECT serial.NEXTVAL FROM DUAL; nextval --------- 101 (1 row) NOCACHE オプションを指定 して supplier_seq というシーケンスを作成し ます。 CREATE SEQUENCE supplier_seq MINVALUE 1 START WITH 1 INCREMENT BY 1 NOCACHE; このシーケンスから次の番号を選択します。 SELECT supplier_seq.NEXTVAL FROM DUAL; nextval --------- 1 (1 row) 関連項目 ALTER SEQUENCE 、 DROP SEQUENCE CREATE SYNONYM - 新しいシノニムを定義する CREATE [OR REPLACE] [PUBLIC] SYNONYM [ schema .] syn _ name 説明 CREATE SYNONYM は、特定のタイプのデータベース・オブジェクトの同義語を定義します。 Advanced Serverは以下の同義語をサポートしています。 ・ テーブル ・ 再生回数 ・ マテリアライズド・ビュー ・ シーケンス ・ ストアドプロシージャ ・ ストアドファンクション ・ タイプ ・ データベースリンクを介してアクセス可能なオブジェクト ・ 他の同義語 syn_name syn_name は同義語の名前です。シノニム名はスキーマ内で一意でなければなりません。 schema schema は、シノニムが存在するスキーマの名前を指定します。スキーマ名を指定しない場合、シノニムは検索パスの最初の既存スキーマに作成されます。 object_name object_name は、オブジェクトの名前を指定します。 object_schema object_schema は、参照オブジェクトが存在するスキーマの名前を指定します。 dblink_name dblink_name は、オブジェクトがアクセスされるデータベース・リンクの名前を指定します。 既存の同義語定義を新しい 同義語定義 に置き換えるには 、 REPLACE 句を 含めます 。 public スキーマに シノニムを作成するには 、 PUBLIC 句を 含め ます。 CREATE PUBLIC SYNONYM コマンドは、Oracleデータベースと互換性があり、 public スキーマに 存在するシノニムを作成し ます。 CREATE [OR REPLACE] PUBLIC SYNONYM syn _ name FOR object_schema . object_name ; これはちょっと書いた簡単な方法です: CREATE [OR
REPLACE] SYNONYM public。 syn _ name FOR object_schema 。 object_name ; ノート シノニムによって参照されるオブジェクトへのアクセスは、シノニムの現在のユーザの許可によって決定される。シノニム・ユーザーは、基礎となるデータベース・オブジェクトに対して適切な権限を持っていなければなりません。 enterprisedb という名前のスキーマ内 の emp 表の シノニムを作成します 。 CREATE SYNONYM personnel FOR enterprisedb.emp; 関連項目 CREATE TABLE - 新しいテーブルを定義する CREATE [ GLOBAL TEMPORARY ] TABLE table_name ( { column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ] | table_constraint } [, ...] ) [ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ] [ TABLESPACE tablespace ] ここで、 column_constraint は次の column_constraint です。 [ CONSTRAINT constraint_name ] { NOT NULL | NULL | UNIQUE [ USING INDEX TABLESPACE tablespace ] | PRIMARY KEY [ USING INDEX TABLESPACE tablespace ] | CHECK ( expression ) | REFERENCES reftable [ ( refcolumn ) ] [ ON DELETE action ] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] そして table_constraint 次のとおりです。 [ CONSTRAINT constraint_name ] { UNIQUE ( column_name [, ...] ) [ USING INDEX TABLESPACE tablespace ] | PRIMARY KEY ( column_name [, ...] ) [ USING INDEX TABLESPACE tablespace ] | CHECK ( expression ) | FOREIGN KEY ( column_name [, ...] ) REFERENCES reftable [ ( refcolumn [, ...] ) ] [ ON DELETE action ] } [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] CREATE TABLE は、現在のデータベースに最初に空の新しい CREATE TABLE を作成します。テーブルは、コマンドを発行したユーザーが所有します。 スキーマ名が指定されている場合(たとえば、 CREATE TABLE myschema 。 mytable ...)、指定されたスキーマにテーブルが作成されます。それ以外の場合は、現在のスキーマに作成されます。テンポラリ・テーブルは特別なスキーマに存在するため、テンポラリ・テーブルを作成するときにスキーマ名が与えられないことがあります。表名は、同じスキーマ内の他の表、順序、索引、またはビューの名前とは異なるものでなければなりません。 CREATE TABLE は、テーブルの1つの行に対応する複合型を表すデータ型も自動的に作成します。したがって、同じスキーマ内の既存のデータ型と同じ名前を持つ表は作成できません。 表は1600を超える列を持つことはできません。 (実際には、タプル長さの制約のために有効な制限がより低くなります)。 オプションの制約節は、挿入操作または更新操作が成功するために新規または更新された行が満たす必要がある制約(またはテスト)を指定します。制約は、さまざまな方法でテーブル内の有効な値のセットを定義するのに役立つSQLオブジェクトです。 制約を定義するには、テーブル制約と列制約の2つの方法があります。列制約は、列定義の一部として定義されます。表制約の定義は特定の列に限定されず、複数の列を含むことができます。すべての列制約は、表制約としても記述できます。制約が1つの列にしか影響しない場合、列制約は表記上の便宜のためにのみ使用されます。 GLOBAL TEMPORARY 指定すると、テーブルは一時テーブルとして作成されます。テンポラリテーブルは、セッションの終了時、またはオプションで現在のトランザクションの終了時に自動的に削除されます(下記の ON COMMIT 参照)。同じ名前を持つ既存の永続表は、スキーマ修飾名で参照されていない限り、一時表が存在する間は現行セッションでは表示されません。さらに、テンポラリ・テーブルは、作成されたセッション外では表示されません。 (グローバル・テンポラリ・テーブルのこの側面は、Oracleデータベースと互換性がありません)。テンポラリ・テーブルで作成されるインデックスは、自動的に一時的にも作成されます。 table_name 作成されるテーブルの名前(スキーマ修飾名でも可)。 column_name 新しいテーブルに作成される列の名前。 data_type 列のデータ型。これには配列指定子が含まれます。 Advanced Serverに含まれているデータ型の詳細については、第 2.2 節を参照してください 。 DEFAULT default_expr DEFAULT 句は、列の定義、それは内に現れる列のデフォルトデータ値を割り当てます。値は任意の変数のない式です(サブクエリおよび現行表の他の列への相互参照は許可されていません)。デフォルトの式のデータ型は、列のデータ型と一致する必要があります。 デフォルトの式は、列の値を指定しない挿入操作で使用されます。列のデフォルト値がない場合、デフォルトはnullです。 CONSTRAINT constraint_name 列または表の制約のオプションの名前。指定されていない場合、システムは名前を生成します。 NOT NULL 列にNULL値を含めることはできません。 NULL 列にはNULL値を含めることができます。これがデフォルトです。 この句は、非標準SQLデータベースとの互換性のためにのみ使用できます。新しいアプリケーションではその使用は推奨されません。 UNIQUE - 列制約 UNIQUE 制約は、表の1つの以上の別個の列のグループが一意の値だけを含むことができることを指定します。ユニークなテーブル制約の動作は、カラム制約の動作と同じで、複数のカラムにまたがる機能が追加されています。 ユニーク制約の目的のために、NULL値は等しいと見なされません。 それぞれのユニークなテーブル制約は、そのテーブルに対して定義された他の一意キー制約またはプライマリキー制約によって指定された列のセットとは異なる列のセットに名前を付ける必要があります。 (それ以外の場合は、同じ制約が2回表示されます)。 PRIMARY KEY - 列制約 主キー制約は、テーブルの1つまたは複数の列に、一意の(重複しない)非NULL値のみが含まれることを指定します。技術的には、 PRIMARY KEY は単なる UNIQUE と NOT NULL 組み合わせです が、主キーとして列のセットを識別すると、スキーマの設計に関するメタデータも提供されます。主キーとは、他のテーブルがこの列のセットを行の一意の識別子。 列制約または表制約のいずれであっても、表に対して指定できる主キーは1つのみです。 主キー制約は、同じテーブルに対して定義された一意制約によって指定された他の列セットとは異なる列セットに名前を付ける必要があります。 CHECK ( expression ) CHECK 句は、新規または更新された行が成功するには、挿入または更新操作のために満たさなければならないBoolean型の結果を生成する式を指定します。 TRUEまたは "unknown"と評価される式は成功します。挿入操作または更新操作のいずれかの行がFALSE結果を生成すると、エラー例外が発生し、挿入または更新によってデータベースが変更されません。列制約として指定された検査制約は、その列の値のみを参照する必要がありますが、表制約に現れる式は複数の列を参照することがあります。 現在、 CHECK 式にはサブクエリを含めることも、現在の行の列以外の変数を参照することもできません。 REFERENCES
reftable [( refcolumn )] [ ON DELETE action ] - 列制約 これらの句は、外部キー制約を指定します。このため、新しいテーブルの1つ以上の列のグループには、参照先テーブルの一部の行の参照された列の値と一致する値のみが含まれている必要があります。場合 refcolumn 省略されている、の主キー reftable 使用されています。参照先の列は、参照先の表の一意キー制約または主キー制約の列でなければなりません。 さらに、参照列のデータが変更されると、この表の列のデータに対して特定のアクションが実行されます。 ON DELETE 句は、参照表の参照行が削除されているときに実行するアクションを指定します。制約が遅延可能であっても、参照アクションを延期することはできません。各句には次のようなアクションがあります。 CASCADE 削除された行を参照する行を削除するか、または参照元列の値を参照先列の新しい値にそれぞれ更新します。 SET NULL 参照する列を NULL 設定し NULL 。 参照される列が頻繁に変更される場合は、外部キー列に関連付けられた参照アクションをより効率的に実行できるように、外部キー列にインデックスを追加することをお勧めします。 DEFERRABLE これは、制約を延期できるかどうかを制御します。遅延可能でない制約は、すべてのコマンドの直後にチェックされます。遅延可能な制約のチェックは、トランザクションの終了時まで延期される場合があります( SET CONSTRAINTS コマンド)。 NOT DEFERRABLE がデフォルトです。現在、この句は外部キー制約のみで受け入れられます。他のすべての制約タイプは遅延可能ではありません。 INITIALLY IMMEDIATE 制約が遅延可能な場合、この句は制約をチェックするデフォルトの時間を指定します。制約が INITIALLY IMMEDIATE 場合は、 各文の後にチェックされます。これがデフォルトです。制約が INITIALLY DEFERRED 場合、 トランザクションの終了時にのみチェックされます。制約チェック時間は、 SET CONSTRAINTS コマンドで 変更できます 。 ON COMMIT トランザクションブロックの終わりにある一時テーブルの動作は、 ON COMMIT を使用して制御できます 。次の2つのオプションがあります。 PRESERVE ROWS 取引終了時に特別な措置はとられません。これがデフォルト動作です。 (このアスペクトはOracleデータベースと互換性がありません.Oracleのデフォルトは DELETE ROWS です)。 DELETE ROWS テンポラリテーブルのすべての行は、各トランザクションブロックの最後に削除されます。本質的に、自動 TRUNCATE は各コミット時に実行されます。 TABLESPACE tablespace tablespace 新しいテーブルが作成される表領域の名前です。指定しない場合、 default tablespace が使用され、 default_tablespace が空の文字列の 場合はデータベースのデフォルト表 tablespace が使用され ます。 USING INDEX TABLESPACE tablespace この句を使用すると、 UNIQUE または PRIMARY KEY 制約に 関連付けられた索引 が作成される 表領域を選択できます 。指定しない場合、 default tablespace が使用され、 default_tablespace が空の文字列の 場合はデータベースのデフォルト表 tablespace が使用され ます。 Advanced Server は、一意性を強制するために、各一意制約と一次キー制約のインデックスを自動的に作成します。したがって、主キー列の明示的な索引を作成する必要はありません。 ( CREATE 詳細については、 INDEX を参照してください)。 例 テーブル dept とテーブル emp 作成します 。 CREATE TABLE dept ( deptno NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY, dname VARCHAR2(14), loc VARCHAR2(13) ); CREATE TABLE emp ( empno NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) CONSTRAINT emp_ref_dept_fk REFERENCES dept(deptno) ); 表の dept 一意の表制約を定義します 。ユニークなテーブル制約は、テーブルの1つ以上のカラムで定義できます。 CREATE TABLE dept ( deptno NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY, dname VARCHAR2(14) CONSTRAINT dept_dname_uq UNIQUE, loc VARCHAR2(13) ); チェック列の制約を定義します。 CREATE TABLE emp ( empno NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2) CONSTRAINT emp_sal_ck CHECK (sal > 0), comm NUMBER(7,2), deptno NUMBER(2) CONSTRAINT emp_ref_dept_fk REFERENCES dept(deptno) ); チェック・テーブルの制約を定義します。 CREATE TABLE emp ( empno NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) CONSTRAINT emp_ref_dept_fk REFERENCES dept(deptno), CONSTRAINT new_emp_ck CHECK (ename IS NOT NULL AND empno > 7000) ); テーブルの jobhist 主キーテーブル制約を定義します 。主キー・テーブルの制約は、表の1つ以上の列で定義できます。 CREATE TABLE jobhist ( empno NUMBER(4) NOT NULL, startdate DATE NOT NULL, enddate DATE, job VARCHAR2(9), sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2), chgdesc VARCHAR2(80), CONSTRAINT jobhist_pk PRIMARY KEY (empno, startdate) ); これは、列、 job リテラル定数のデフォルト値を割り当て、 hiredate のデフォルト値を 行が挿入された日付にします。 CREATE TABLE emp ( empno NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9) DEFAULT 'SALESMAN', mgr NUMBER(4), hiredate DATE DEFAULT SYSDATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) CONSTRAINT emp_ref_dept_fk REFERENCES dept(deptno) ); 表領域 diskvol1 表 dept を 作成します 。 CREATE TABLE dept ( deptno NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY, dname VARCHAR2(14), loc VARCHAR2(13) ) TABLESPACE diskvol1; CREATE TABLE AS - クエリの結果から新しいテーブルを定義する CREATE [ GLOBAL TEMPORARY ] TABLE table_name [ ( column_name [, ...] ) ] [ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ] [ TABLESPACE tablespace ] AS query CREATE TABLE AS は、テーブルを作成し、 SELECT コマンド によって計算されたデータでそのテーブルを埋め ます。表の列には、 SELECT 出力列に関連付けられた名前とデータ型 があります(ただし、新しい列名の明示的なリストを指定して列名を変更できます)。 CREATE TABLE AS はビューを作成するのに似ていますが、実際には全く異なります。新しいテーブルを作成し、初めて新しいテーブルを満たすためにクエリを1回評価します。新しいテーブルは、クエリのソーステーブルへのその後の変更を追跡しません。対照的に、ビュー はクエリされるたびに 定義された SELECT 文を 再評価し ます。 GLOBAL TEMPORARY 指定すると、テーブルは一時テーブルとして作成されます。詳細 については 、 CREATE TABLE を参照してください。 table_name 作成されるテーブルの名前(スキーマ修飾名でも可)。 column_name 新しい表の列の名前。列名が指定されていない場合、列名はクエリの出力列名から取得されます。 query 照会ステートメント( SELECT コマンド)。 許可される構文の説明については、 SELECT を 参照してください 。 名 CREATE TRIGGER - 新しいトリガーを定義する シノプシス CREATE [ OR REPLACE ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { INSERT | UPDATE | DELETE } [ OR { INSERT | UPDATE | DELETE } ] [, ...] ON table [ REFERENCING { OLD AS old | NEW AS new } ...] [ FOR EACH ROW ] [ WHEN condition ] [ DECLARE declaration; [, ...] ] BEGIN statement; [, ...] [ EXCEPTION { WHEN exception [ OR exception ] [...] THEN statement ; [, ...] } [, ...] ] END 説明 CREATE TRIGGER は新しいトリガーを定義します。 CREATE OR REPLACE TRIGGER は新しいトリガーを作成するか、既存の定義を置き換えます。 CREATE を使用している場合 TRIGGER キーワードを使用して新しいトリガを作成する場合、新しいトリガの名前は、同じテーブルに定義されている既存のトリガと一致していてはなりません。新しいトリガーは、トリガー・イベントが定義されている表と同じスキーマに作成されます。 既存のトリガーの定義を更新する場合は、 CREATE OR REPLACE TRIGGER キーワードを使用します。 Oracleと互換性のある構文を使用してトリガーを作成すると、トリガーは SECURITY として実行されます DEFINER 機能。 パラメーター name 作成するトリガーの名前。 BEFORE | AFTER トリガーがトリガーイベントの前または後に発生するかどうかを決定します。 INSERT | UPDATE | DELETE トリガーイベントを定義します。 table トリガーイベントが発生するテーブルの名前。 condition condition はトリガーが実際に実行されるかどうかを決定するブール式です。 condition が TRUE と 評価された 場合 、トリガが起動します。 トリガー定義に FOR EACH ROW キーワードを使用すると、 WHEN 句は OLD を記述することによって古い行および/または新しい行の列を参照できます 。 column _ name または NEW 。 column _ name それぞれ指定します。 INSERT トリガーは OLD を 参照できず 、 DELETE トリガーは NEW 参照できません 。 トリガに INSTEAD が含まれている INSTEAD OF キーワードには、 WHEN 句が 含まれていない場合があります 。 WHEN 句は、サブクエリを含むことはできません。 old REFERENCING { OLD AS | NEW AS new } ... REFERENCING 節は古い行と新しい行を参照しますが、 old は old やそれ以外のすべての小文字で保存 された識別子で置き換えることができます (たとえば、 REFERENCING OLD AS old 、 REFERENCING OLD AS OLD 、 REFERENCING OLD AS "old" )。また、 new 唯一の名前の識別子に置き換えることができる new (例えば、またはすべて小文字で保存されている任意の等価 REFERENCING NEW AS new 、 REFERENCING NEW AS NEW か、 REFERENCING NEW AS "new" )。 OLD AS old および NEW AS new いずれか、または両方を REFERENCING 節に 指定することができます (たとえば、 REFERENCING NEW AS New OLD AS Old 同様に REFERENCING NEW AS New OLD AS Old )。 この句は、以外の識別子という点で、Oracleデータベースと互換性がない old か new 使用することはできません。 FOR EACH ROW トリガイベントの影響を受けるすべての行に対してトリガを1回実行するか、 SQL文ごとに1回だけトリガするかを決定します 。指定すると、トリガーは影響を受けた各行(行レベルのトリガー)ごとに1回起動されます。それ以外の場合は、トリガーはステートメントレベルのトリガーです。 declaration 変数、型、 REF CURSOR 、またはサブプログラムの宣言。 サブプログラム宣言が含まれている場合は、他のすべての変数、型、および REF CURSOR 宣言の 後に宣言する必要があり REF CURSOR 。 statement SPLプログラムのステートメント。ことに注意してください DECLARE - BEGIN - END ブロックは、それ自体がSPLの文とみなされます。したがって、トリガー本体にネストされたブロックが含まれることがあります。 exception 以下のような例外条件名 NO_DATA_FOUND 、 OTHERS など、 例 以下は、トリガー・ステートメント(表 emp 挿入、更新、または削除 )が実行された 後に起動するステートメント・レベルのトリガーです 。 CREATE OR REPLACE TRIGGER user_audit_trig AFTER INSERT OR UPDATE OR DELETE ON emp DECLARE v_action VARCHAR2(24); BEGIN IF INSERTING THEN v_action := ' added employee(s) on '; ELSIF UPDATING THEN v_action := ' updated employee(s) on '; ELSIF DELETING THEN v_action := ' deleted employee(s) on '; END IF; DBMS_OUTPUT.PUT_LINE('User ' || USER || v_action || TO_CHAR(SYSDATE,'YYYY-MM-DD')); END; 以下は、各行が表 emp 挿入、更新、または削除される前に起動する行レベルのトリガーです 。 CREATE OR REPLACE TRIGGER emp_sal_trig BEFORE DELETE OR INSERT OR UPDATE ON emp FOR EACH ROW DECLARE sal_diff NUMBER; BEGIN IF INSERTING THEN DBMS_OUTPUT.PUT_LINE('Inserting employee ' || :NEW.empno); DBMS_OUTPUT.PUT_LINE('..New salary: ' || :NEW.sal); END IF; IF UPDATING THEN sal_diff := :NEW.sal - :OLD.sal; DBMS_OUTPUT.PUT_LINE('Updating employee ' || :OLD.empno); DBMS_OUTPUT.PUT_LINE('..Old salary: ' || :OLD.sal); DBMS_OUTPUT.PUT_LINE('..New salary: ' || :NEW.sal); DBMS_OUTPUT.PUT_LINE('..Raise : ' || sal_diff); END IF; IF DELETING THEN DBMS_OUTPUT.PUT_LINE('Deleting employee ' || :OLD.empno); DBMS_OUTPUT.PUT_LINE('..Old salary: ' || :OLD.sal); END IF; END; 関連項目 名 CREATE TYPE - 新しいユーザー定義タイプを定義します。これは、オブジェクト・タイプ、コレクション・タイプ(ネストした表タイプまたはVARRAYタイプ)、または複合タイプとすることができます。 シノプシス オブジェクトタイプ CREATE [ OR REPLACE ] TYPE name [ AUTHID { DEFINER | CURRENT_USER } ] { IS | AS } OBJECT ( { attribute { datatype | objtype | collecttype } } [, ...] [ method_spec ] [, ...] ) [ [ NOT ] { FINAL | INSTANTIABLE } ] ... ここで、 method_spec は: [ [ NOT ] { FINAL | INSTANTIABLE } ] ... [ OVERRIDING ] subprogram_spec そして subprogram_spec 次のとおりです。 { MEMBER | STATIC } { PROCEDURE proc_name [ ( [ SELF [ IN | IN OUT ] name ] [, argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value
] ...) ] | FUNCTION func_name [ ( [ SELF [ IN | IN OUT ] name ] [, argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ] ] ...) ] RETURN rettype } ネストした表の型 CREATE [ OR REPLACE ] TYPE name { IS | AS } TABLE OF { datatype | objtype | collecttype } バレータイプ CREATE [ OR REPLACE ] TYPE name { IS | AS } { VARRAY | VARYING ARRAY } ( maxsize ) OF { datatype | objtype } コンポジットタイプ CREATE [ OR REPLACE ] TYPE name { IS | AS } ( [ attribute datatype ][, ...] ) 説明 CREATE TYPE は、新しいユーザー定義データ型を定義します。作成できる型は、オブジェクト型、ネストした表の型、VARRAY型、または複合型です。ネストした表およびVARRAY型は、 コレクションと 呼ばれる型のカテゴリに属します 。 複合型 はOracleデータベースと互換性がありません。ただし、このセクションで説明する他のタイプと同様に、SPLプログラムによって複合タイプにアクセスすることができます。 注: パッケージのみの場合 、パッケージ仕様またはパッケージ本体内の TYPE IS RECORD ステートメントで 宣言されたユーザー定義レコード・タイプに複合タイプを組み込むことができます 。このような入れ子構造は、関数、プロシージャ、トリガなどの他のSPLプログラムでは許可されません。 では CREATE TYPE スキーマ名が含まれている場合は、コマンドを、その種類はそれ以外の場合は現在のスキーマで作成され、指定されたスキーマで作成されています。新しいタイプの名前は、既存のタイプの定義を更新する意図がないかぎり、同じスキーマ内の既存のタイプと一致していてはなりません 。 その場合は CREATE OR REPLACE TYPE 使用します 。 注: 現在、 OR REPLACE オプションを使用して、既存のオブジェクト型の属性を追加、削除、または変更することはできません。 既存のオブジェクトタイプを最初に削除するには 、 DROP TYPE コマンドを 使用し ます。 OR REPLACE オプションは、追加、削除、または既存のオブジェクト型のメソッドを変更するために使用することができます。 注: PostgreSQL形式の ALTER TYPE ALTER ATTRIBUTE コマンドを使用して、既存のオブジェクト型の属性のデータ型を変更することができます。ただし、 ALTER TYPE コマンドはオブジェクト型の属性を追加または削除できません。 型を作成するユーザーが型の所有者になります。 パラメーター name 作成する型の名前(スキーマ修飾名でも可)。 DEFINER | CURRENT_USER オブジェクト型所有者( DEFINER )の権限またはオブジェクト型( CURRENT_USER )で メソッドを実行している現行ユーザーの権限を 使用して、オブジェクト型で参照されるデータベース・オブジェクトへのアクセスが許可されているかどうかを指定します。 DEFINER がデフォルトです。 attribute オブジェクト型または複合型の属性の名前。 datatype オブジェクト型または複合型の属性を定義するデータ型、または
作成されているコレクションの種類。 objtype オブジェクト型の属性または作成されるコレクション型の要素を定義するオブジェクト型の名前。 collecttype オブジェクト型の属性または作成されるコレクション型の要素を定義するコレクション型の名前。 FINAL オブジェクトタイプの場合、サブタイプをオブジェクトタイプから派生できるかどうかを指定します。 FINAL (オブジェクト型からサブタイプを派生させることはできません)がデフォルトです。 ため method_spec 、方法はサブタイプでオーバーライドすることができるかどうかを指定します。 NOT FINAL (サブタイプでメソッドがオーバーライドされる可能性があります)がデフォルトです。 INSTANTIABLE オブジェクト型の場合、このオブジェクト型のオブジェクトインスタンスを作成できるかどうかを指定します。 INSTANTIABLE (このオブジェクト型のインスタンスを作成できる)がデフォルトです。 NOT INSTANTIABLE が指定されている 場合 は、 NOT FINAL も指定する必要があります。場合 method_spec オブジェクト型のいずれかの方法については含まれてい NOT INSTANTIABLE 修飾子、そのオブジェクトの種類を、自分自身を、で定義する必要があり NOT INSTANTIABLE および NOT FINAL オブジェクト型の仕様の閉じ括弧の後。 ため method_spec 、オブジェクト型定義はメソッドの実装を提供するかどうかを指定します。 INSTANTIABLE ( オブジェクト型 の CREATE TYPE BODY コマンドがメソッドの実装を提供します)がデフォルトです。 NOT INSTANTIABLE が指定されている 場合 、オブジェクト型 の CREATE TYPE BODY コマンドにメソッドの実装が含まれていてはなりません。 OVERRIDING 場合 OVERRIDING 指定されている、 method_spec 同じ順序で、同じデータ型で同じ名前のメソッドの引数の同じ数の同じ名前のメソッドをオーバーライドし、そして同一の戻り型スーパータイプで定義されている(メソッドが関数である場合)。 MEMBER サブプログラムがオブジェクト・インスタンス上で操作する場合は、 MEMBER 指定し ます。 サブプログラムが特定のオブジェクト・インスタンスとは独立して動作する場合は、 STATIC 指定し ます。 proc_name 作成するプロシージャの名前。 SELF [ IN | IN OUT ] name メンバーメソッドの場合、 定義されているオブジェクトタイプのデータ型 である暗黙の組み込みパラメータ SELF あります。 SELF は、現在メソッドを呼び出すオブジェクトインスタンスを参照します。 SELF は 、パラメータリストの IN または IN OUT パラメータ として明示的に宣言できます 。明示的に宣言されている場合、 SELF はパラメータリストの最初のパラメータでなければなりません。 SELF が明示的に宣言されていない 場合 、そのパラメーター・モードのデフォルト はメンバー・プロシージャーの 場合は IN OUT 、メンバー関数の場合は IN になります。 argname 引数の名前。引数は、メソッド本体内でこの名前で参照されます。 argtype メソッドの引数のデータ型。引数型は、基本データ型でも、ネストした表やオブジェクト型などのユーザー定義型でもかまいません。長さは、任意の基本型に指定してはならない-例えば、指定 VARCHAR2 なく、 VARCHAR2(10) DEFAULT value メソッド呼び出しで入力引数が指定されていない場合は、入力引数のデフォルト値を指定します。 IN OUT または OUT モードの引数の場合、 DEFAULT は指定できません 。 func_name 作成する関数の名前。 rettype 戻り値の型 argtype リストされている型のいずれかです 。 argtype 、長さを指定することはできません rettype 。 maxsize VARRAYで許可されている要素の最大数。 例 オブジェクト型の作成 オブジェクトタイプ addr_obj_typ 作成します 。 CREATE OR REPLACE TYPE addr_obj_typ AS OBJECT ( street VARCHAR2(30), city VARCHAR2(20), state CHAR(2), zip NUMBER(5) ); メンバ・メソッド display_emp を含む オブジェクト型 emp_obj_typ を 作成します 。 CREATE OR REPLACE TYPE emp_obj_typ AS OBJECT ( empno NUMBER(4), ename VARCHAR2(20), addr ADDR_OBJ_TYP, MEMBER PROCEDURE display_emp (SELF IN OUT emp_obj_typ) ); 静的メソッド get_dname を含む オブジェクト型 dept_obj_typ を 作成します 。 CREATE OR REPLACE TYPE dept_obj_typ AS OBJECT ( deptno NUMBER(2), STATIC FUNCTION get_dname (p_deptno IN NUMBER) RETURN VARCHAR2, MEMBER PROCEDURE display_dept ); コレクションタイプの作成 データ型 NUMBER(8,2) ネストした表のタイプ budget_tbl_typ 作成します 。 CREATE OR REPLACE TYPE budget_tbl_typ IS TABLE OF NUMBER(8,2); 複合型の作成と使用 次の例は、匿名ブロックからアクセスされる複合型の使用法を示しています。 コンポジット型は、次のように作成されます。 CREATE OR REPLACE TYPE emphist_typ AS ( empno NUMBER(4), ename VARCHAR2(10), hiredate DATE, job VARCHAR2(9), sal NUMBER(7,2) ); 複合型にアクセスする無名ブロックは次のとおりです。 DECLARE v_emphist EMPHIST_TYP; BEGIN v_emphist.empno := 9001; v_emphist.ename := 'SMITH'; v_emphist.hiredate := '01-AUG-17'; v_emphist.job := 'SALESMAN'; v_emphist.sal := 8000.00; DBMS_OUTPUT.PUT_LINE(' EMPNO: ' || v_emphist.empno); DBMS_OUTPUT.PUT_LINE(' ENAME: ' || v_emphist.ename); DBMS_OUTPUT.PUT_LINE('HIREDATE: ' || v_emphist.hiredate); DBMS_OUTPUT.PUT_LINE(' JOB: ' || v_emphist.job); DBMS_OUTPUT.PUT_LINE(' SAL: ' || v_emphist.sal); END; EMPNO: 9001 ENAME: SMITH HIREDATE: 01-AUG-17 00:00:00 JOB: SALESMAN SAL: 8000.00 次の例は、パッケージ本体内で宣言されたユーザー定義レコード型からアクセスされる複合型の使用法を示しています。 コンポジット型は、次のように作成されます。 CREATE OR REPLACE TYPE salhist_typ AS ( startdate DATE, job VARCHAR2(9), sal NUMBER(7,2) ); パッケージ仕様は、次のように定義されています。 CREATE OR REPLACE PACKAGE emp_salhist IS PROCEDURE fetch_emp ( p_empno IN NUMBER ); END; パッケージ本体は次のように定義されます。 CREATE OR REPLACE PACKAGE BODY emp_salhist IS TYPE emprec_typ IS RECORD ( empno NUMBER(4), ename VARCHAR(10), salhist SALHIST_TYP ); TYPE emp_arr_typ IS TABLE OF emprec_typ INDEX BY BINARY_INTEGER; emp_arr emp_arr_typ; PROCEDURE fetch_emp ( p_empno IN NUMBER ) IS CURSOR emp_cur IS SELECT e.empno, e.ename, h.startdate, h.job, h.sal FROM emp e, jobhist h WHERE e.empno = p_empno AND e.empno = h.empno; i INTEGER := 0; BEGIN DBMS_OUTPUT.PUT_LINE('EMPNO ENAME STARTDATE JOB ' || 'SAL '); DBMS_OUTPUT.PUT_LINE('----- ------- --------- --------- ' || '---------'); FOR r_emp IN emp_cur LOOP i := i + 1; emp_arr(i) := (r_emp.empno, r_emp.ename, (r_emp.startdate, r_emp.job, r_emp.sal)); END LOOP; FOR i IN 1 .. emp_arr.COUNT LOOP DBMS_OUTPUT.PUT_LINE(emp_arr(i).empno || ' ' || RPAD(emp_arr(i).ename,8) || ' ' || TO_CHAR(emp_arr(i).salhist.startdate,'DD-MON-YY') || ' ' || RPAD(emp_arr(i).salhist.job,10) || ' ' || TO_CHAR(emp_arr(i).salhist.sal,'99,999.99')); END LOOP; END; END; パッケージ本体 の TYPE emprec_typ IS RECORD データ構造体 の宣言では 、 salhist フィールドは 、 CREATE TYPE salhist_typ 文で 作成された SALHIST_TYP 複合型で 定義されていることに CREATE TYPE salhist_typ ください。 結合配列定義 TYPE emp_arr_typ IS TABLE OF emprec_typ は、 SALHIST_TYP 複合型で 定義さ れたフィールド salhist を 含む レコード型データ構造体 emprec_typ を 参照し ます。 emp 表 と jobhist 表の 結合から配列をロードし 、次に配列内容を表示 するパッケージ・プロシージャの呼び出しは、 次のように表示されます。 EXEC emp_salhist.fetch_emp(7788); EMPNO ENAME STARTDATE JOB SAL ----- ------- --------- --------- --------- 7788 SCOTT 19-APR-87 CLERK 1,000.00 7788 SCOTT 13-APR-88 CLERK 1,040.00 7788 SCOTT 05-MAY-90 ANALYST 3,000.00 EDB-SPL Procedure successfully completed 関連項目 名 CREATE TYPE BODY - 新しいオブジェクト型本体を定義する シノプシス CREATE [ OR REPLACE ] TYPE BODY name { IS | AS } method_spec
END ここで、 method_spec は: subprogram_spec そして subprogram_spec 次のとおりです。 { MEMBER | STATIC } { PROCEDURE proc_name [ ( [ SELF [ IN | IN OUT ] name ] [, argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ] ] ...) ] { IS | AS } program_body END; | FUNCTION func_name [ ( [ SELF [ IN | IN OUT ] name ] [, argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ] ] ...) ] RETURN rettype { IS |AS } program_body END; } 説明 CREATE TYPE BODY は新しいオブジェクト型本体を定義します。 CREATE OR REPLACE TYPE BODY は、新しいオブジェクト型本体を作成するか、既存の本体を置き換えます。 スキーマ名が含まれている場合、指定されたスキーマにオブジェクト型本体が作成されます。それ以外の場合は、現在のスキーマに作成されます。新しいオブジェクト型本体の名前は、同じスキーマ内の既存のオブジェクト型指定と一致しなければなりません。新しいオブジェクトタイプのボディー名は、既存のオブジェクトタイプ本体の定義を更新する場合を除いて、同じスキーマ内の既存のオブジェクトタイプ本体と一致していてはなりません(その場合は CREATE OR REPLACE TYPE BODY 。 パラメーター name 本文が作成されるオブジェクト型の名前(スキーマ修飾名も可)。 MEMBER サブプログラムがオブジェクト・インスタンス上で操作する場合は、 MEMBER 指定し ます。 サブプログラムが特定のオブジェクト・インスタンスとは独立して動作する場合は、 STATIC 指定し ます。 proc_name 作成するプロシージャの名前。 SELF [ IN | IN OUT ] name メンバーメソッドの場合、 定義されているオブジェクトタイプのデータ型 である暗黙の組み込みパラメータ SELF あります。 SELF は、現在メソッドを呼び出すオブジェクトインスタンスを参照します。 SELF は 、パラメータリストの IN または IN OUT パラメータ として明示的に宣言できます 。明示的に宣言されている場合、 SELF はパラメータリストの最初のパラメータでなければなりません。 SELF が明示的に宣言されていない 場合 、そのパラメーター・モードのデフォルト はメンバー・プロシージャーの 場合は IN OUT 、メンバー関数の場合は IN になります。 argname 引数の名前。引数は、メソッド本体内でこの名前で参照されます。 argtype メソッドの引数のデータ型。引数型は、基本データ型でも、ネストした表やオブジェクト型などのユーザー定義型でもかまいません。長さは、任意の基本型に指定してはならない-例えば、指定 VARCHAR2 なく、 VARCHAR2(10) DEFAULT value メソッド呼び出しで入力引数が指定されていない場合は、入力引数のデフォルト値を指定します。 IN OUT または OUT モードの引数の場合、 DEFAULT は指定できません 。 program_body 関数またはプロシージャーの本体を構成する宣言およびSPLステートメント。 func_name 作成する関数の名前。 rettype 戻り値の型 argtype リストされている型のいずれかです 。 argtype 、長さを指定することはできません rettype 。 例 CREATE TYPE コマンドの 例に示されている オブジェクト・タイプ emp_obj_typ のオブジェクト・タイプ本体を作成します 。 CREATE OR REPLACE TYPE BODY emp_obj_typ AS MEMBER PROCEDURE display_emp (SELF IN OUT emp_obj_typ) IS BEGIN DBMS_OUTPUT.PUT_LINE('Employee No : ' || empno); DBMS_OUTPUT.PUT_LINE('Name : ' || ename); DBMS_OUTPUT.PUT_LINE('Street : ' || addr.street); DBMS_OUTPUT.PUT_LINE('City/State/Zip: ' || addr.city || ', ' || addr.state || ' ' || LPAD(addr.zip,5,'0')); END; END; CREATE TYPE コマンドの 例で指定された オブジェクト・タイプ dept_obj_typ のオブジェクト・タイプ本体を作成します 。 CREATE OR REPLACE TYPE BODY dept_obj_typ AS STATIC FUNCTION get_dname (p_deptno IN NUMBER) RETURN VARCHAR2 IS v_dname VARCHAR2(14); BEGIN CASE p_deptno WHEN 10 THEN v_dname := 'ACCOUNING'; WHEN 20 THEN v_dname := 'RESEARCH'; WHEN 30 THEN v_dname := 'SALES'; WHEN 40 THEN v_dname := 'OPERATIONS'; ELSE v_dname := 'UNKNOWN'; END CASE; RETURN v_dname; END; MEMBER PROCEDURE display_dept IS BEGIN DBMS_OUTPUT.PUT_LINE('Dept No : ' || SELF.deptno); DBMS_OUTPUT.PUT_LINE('Dept Name : ' || dept_obj_typ.get_dname(SELF.deptno)); END; END; 関連項目 CREATE USER - 新しいデータベースユーザーアカウントを定義する CREATE USER name [ IDENTIFIED BY password ] CREATE USER はAdvanced Serverデータベース・クラスタに新しいユーザーを追加します。このコマンドを使用するには、データベースのスーパーユーザーである必要があります。 場合は CREATE USER コマンドが与えられ、スキーマは、新しいユーザーと同じ名前で作成し、新しいユーザーによって所有されます。このユーザーによって作成された修飾されていない名前のオブジェクトは、このスキーマで作成されます。 name ユーザーの名前。 password ユーザーのパスワード。パスワードは後で ALTER USER を使用して変更できます 。 ノート ユーザー名とパスワードの最大長は63文字です。 john という名前のユーザーを作成します 。 CREATE USER john IDENTIFIED BY abc; 名 CREATE USER|ROLE シノプシス CREATE USER|ROLE name [[WITH] option […]] どこ option 、次の互換性の句を指定できます。 PROFILE profile_name または option は、次の互換性のない節に option ことができます。 | LOCK TIME ' timestamp ' CREATE 管理句に関する情報 USER または CREATE ROLE コマンドについては、次のURLにあるPostgreSQLのコアドキュメントを参照してください。 https://www.postgresql.org/docs/10/static/sql-commands.html 説明 CREATE ROLE|USER… PROFILE は、関連するプロファイルとともに新しい役割をAdvanced Serverデータベースクラスタに追加します。 CREATE Roles created with the USER command are (by default) login roles. Roles created with the CREATE command are (by default) login roles. Roles created with the ROLE command are (by default) not login roles. To create a login account with the CREATE command are (by default) not login roles. To create a login account with the ROLE command, you must include the LOGIN keyword. command, you must include the keyword. データベーススーパーユーザーだけが CREATE を使用できます。 USER | プロファイル管理を実施する ROLE 句 これらの条項は次のような行動を強制します: 事前定義されたプロファイルを役割に関連付ける、または事前定義されたプロファイルがユーザーに関連付けられていることを変更するに Include the PROFILE 句と profile_name を Include the ます。 ACCOUNT 句と LOCK または UNLOCK キーワードを 含め て、ユーザー・アカウントをロック状態またはロック解除状態にする必要があることを指定します。 LOCK 含める TIME ' timestamp ' 句、および指定された時刻にロールをロックする日付/時刻値、および このロールに割り当てられたプロファイル の PASSWORD _ LOCK _ TIME パラメータで 指定された時刻にロールをロック解除し ます。もし LOCK TIME は ACCOUNT 使用されます LOCK 句では、ロールは、データベーススーパーユーザーが ACCOUNT 使用してのみロックを解除できます UNLOCK 句 。 PASSWORD 含める オプションの AT 持つ EXPIRE 句 ' timestamp ' キーワードを使用して、ロールに関連付けられたパスワードの有効期限が切れる日時を指定します。 AT を省略すると ' timestamp ' キーワードを入力すると、パスワードはすぐに期限切れになります。 各ログインロールは1つのプロファイルのみを持つことができます。現在ログイン・ロールに関連付けられているプロファイルを検出するに は、 DBA_USERS ビューの profile 列を DBA_USERS ます。 パラメーター name ロールの名前。 profile_name ロールに関連付けられたプロファイルの名前。 timestamp 条項が適用される日時。 timestamp 値を指定する場合は 、値を一重引用符で囲みます。 例 次の例では、 CREATE USER を使用 して、 acctg_profile プロファイルに 関連付け られている john という名前のログイン・ロールを作成します 。 CREATE USER john PROFILE acctg_profile IDENTIFIED BY “1safepwd”; john はパスワード 1safepwd を使用してサーバーにログインできます 。 次の例では、 CREATE ROLE を使用 して、 acctg_profile プロファイルに 関連付け られた john という名前のログイン・ ROLE を作成します 。 CREATE ROLE john PROFILE acctg_profile LOGIN PASSWORD “1safepwd”; john はパスワード 1safepwd を使用してサーバーにログインできます 。 CREATE VIEW - 新しいビューを定義する CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query CREATE VIEW はクエリのビューを定義します。ビューは物理的にマテリアライズされていません。代わりに、クエリがクエリで参照されるたびにクエリが実行されます。 CREATE OR REPLACE VIEW は似ていますが、同じ名前のビューがすでに存在する場合は置換されます。 スキーマ名が指定されている場合(たとえば、 CREATE VIEW myschema.myview ...)、ビューは指定されたスキーマに作成されます。それ以外の場合は、現在のスキーマに作成されます。ビュー名は、同じスキーマ内の他のビュー、テーブル、シーケンス、またはインデックスの名前とは異なる名前でなければなりません。 name 作成されるビューの名前(スキーマ修飾名も可) column_name ビューの列に使用されるオプションの名前リスト。指定されていない場合は、クエリから列名が導出されます。 query クエリ(つまり、 SELECT lang = EN-US>文)を使用して、ビューの列と行を指定します。 有効な照会の詳細については 、 SELECT を 参照してください 。 ノート 現在、ビューは読み取り専用です。システムはビューに対して挿入、更新、または削除を許可しません。ビューの挿入などを他の表の適切なアクションに書き換えるルールを作成することによって、更新可能なビューの効果を得ることができます。 ビューで参照されるテーブルへのアクセスは、ビュー所有者の権限によって決定されます。ただし、ビューで呼び出された関数は、ビューを使用して直接クエリから呼び出された場合と同じように扱われます。したがって、ビューのユーザーは、ビューによって使用されるすべての関数を呼び出すための権限を持っている必要があります。 部門30のすべての従業員で構成されるビューを作成します。 CREATE VIEW dept_30 AS SELECT * FROM emp WHERE deptno = 30; DELETE - テーブルの行を削除する DELETE [ optimizer_hint ] FROM table [@ dblink ] [ WHERE condition ] [ RETURNING return_expression [, ...] { INTO { record | variable [, ...] } | BULK COLLECT INTO collection [, ...] } ] DELETE は、指定された表から WHERE 句 を満たす行を削除し ます。 WHERE 句が指定されていない 場合は 、テーブル内のすべての行を削除します。結果は有効な空の表です。 注 : TRUNCATE コマンドは、表からすべての行を除去するより高速なメカニズムを提供します。 RETURNING INTO { record | variable [, ...] } 句は、 DELETE コマンドがSPLプログラム内で使用 されている場合にのみ指定できます 。さらに、 DELETE コマンドの 結果セットに 複数行が含まれていてはいけません。それ以外の場合は例外がスローされます。結果セットが空の場合、ターゲットレコードの内容はNULLに設定されます。 RETURNING BULK COLLECT INTO collection [, ...] 場合句にのみ指定することができる DELETE コマンドはSPLプログラム内で使用されています。複数の collection が BULK COLLECT INTO 句の ターゲットとして指定されている 場合、各 collection は単一のスカラーフィールドで構成されている必要があります 。 つまり、 collection はレコードであってはなりません。 DELETE コマンド の結果セットには 、1つ以上の行が含まれている場合があります。 結果セットの各行に対して評価される return_expression は、最初の要素から始まる collection 要素になり ます。 collection 内の既存の行はすべて 削除されます。結果セットが空の場合、 collection は空に なります。 あなたは持っている必要があります DELETE それから削除するには、テーブル上の特権だけでなく、 SELECT の値の状態で読まれているすべてのテーブルの権限を。 パラメーター optimizer_hint 実行計画の選択のためのオプティマイザへのコメント埋め込みヒント。 table 既存の表の名前(スキーマ修飾名も可)。 dblink リモートデータベースを識別するデータベースリンク名。 CREATE 参照してください DATABASE LINK コマンドを使用して、データベース・リンクの情報を取得します。 condition 削除される行を決定する BOOLEAN 型の値を戻す値式 。 return_expression table 1つ以上の列を含む式 。 return_expression table 列名 が指定され ている場合、 return_expression が評価された ときの列 の値は、削除された行の値です。 record フィールドが評価されたレコード
style = 'font-size:11.0pt'> return_expression が割り当てられます。最初の return_expression は record の最初のフィールドに 割り当てられ 、2番目の return_expression は record の2番目のフィールドに割り当てられ ます。 record のフィールド 数は式の数と完全に一致しなければならず、フィールドは割り当てられた表現。 variable 評価された return_expression が割り当てられる 変数 。複数の return_expression と variable が指定されている場合、 first return_expression が最初の variable に 割り当てられ 、2番目の return_expression が2番目の variable 割り当てられ ます INTO キーワードの 後に指定される変数 の数は、 RETURNING キーワードと変数は、割り当てられた式と型互換性がなければなりません。 collection 評価された return_expression から要素が作成されるコレクション 。単一フィールドのコレクションまたはレコードタイプのコレクションである単一のコレクション、または複数のコレクションが存在する場合があります。その場合、各コレクションは単一のフィールドで構成されなければなりません。戻り式の数は、指定されたすべてのコレクションのフィールド数と順番に一致する必要があります。それぞれの対応する return_expression および collection フィールドは型互換性がなければなりません。 jobhist テーブル からemployee 7900のすべての行を削除し ます。 DELETE FROM jobhist WHERE empno = 7900; テーブルの jobhist クリアします : DELETE FROM jobhist; 名 DROP DATABASE LINK - データベースリンクを削除する シノプシス DROP [ PUBLIC ] DATABASE LINK name 説明 DROP DATABASE LINK は、既存のデータベースリンクを削除します。このコマンドを実行するには、スーパーユーザーまたはデータベースリンクの所有者でなければなりません。 パラメーター name 削除されるデータベース・リンクの名前。 PUBLIC name がパブリックデータベースリンクである ことを示します 。 例 oralink という名前のパブリックデータベースリンクを削除します 。 DROP PUBLIC DATABASE LINK oralink; 「 edblink という名前のプライベート・データベース・リンクを削除します 。 DROP DATABASE LINK edblink; 関連項目 名 DROP DIRECTORY - ファイルシステムのディレクトリパスのディレクトリエイリアスを削除する シノプシス DROP DIRECTORY name 説明 DROP DIRECTORY は、 CREATE DIRECTORY コマンドで 作成されたファイルシステムディレクトリパスの既存のエイリアスを削除します 。このコマンドを実行するには、スーパーユーザーでなければなりません。 ディレクトリエイリアスが削除されると、対応する物理ファイルシステムディレクトリは影響を受けません。ファイルシステムディレクトリは、適切なオペレーティングシステムコマンドを使用して削除する必要があります。 パラメーター name 削除されるディレクトリエイリアスの名前。 例 empdir というディレクトリエイリアスを削除し empdir 。 DROP DIRECTORY empdir; 関連項目 名 DROP FUNCTION - 関数を削除する シノプシス DROP FUNCTION name [ ([ [ argmode ] [ argname ] argtype ] [, ...]) ] 説明 DROP FUNCTION は、既存の関数の定義を削除します。このコマンドを実行するには、スーパーユーザーまたはその関数の所有者でなければなりません。 少なくとも1つの入力引数がある場合は、関数への すべての入力( IN 、 IN OUT )引数データ型を指定する必要があります。 (この要件は、Oracleデータベースと互換性がありません。オラクルでは、関数名だけが指定されている。Advanced Serverは、関数名のオーバーロードを可能にするので、入力引数のデータ型によって与えられた関数のシグネチャは、Advanced Serverで必要とされる DROP FUNCTION コマンドを実行します。) パラメーター name 既存の関数の名前(スキーマ修飾名も可)。 argmode 引き数のモード: IN 、 IN OUT 、または OUT 。省略すると、デフォルトは IN です。その注意 DROP FUNCTION 実際に注意を払っていない OUT のみの入力引数は、関数の同一性を決定するために必要とされているので、引数を指定します。 IN と IN OUT 引数 だけをリストするだけで十分 です。 ( argmode はOracleデータベースと互換性がなく、Advanced Serverにのみ適用されます)。 argname 引数の名前。その注意 DROP FUNCTION 唯一の引数のデータ型は、関数の同一性を決定するために必要とされているので、実際に、引数名に注意を払っていません。 ( argname はOracleデータベースと互換性がなく、Advanced Serverにのみ適用されます)。 argtype 関数の引数のデータ型。 ( argtype 仕様は Oracleデータベースと互換性がなく、Advanced Serverにのみ適用されます)。 例 次のコマンドは、 emp_comp 関数を 削除し ます。 DROP FUNCTION emp_comp(NUMBER, NUMBER); DROP INDEX - インデックスを削除する DROP INDEX name DROP INDEX は、データベースシステムから既存のインデックスを削除します。このコマンドを実行するには、スーパーユーザーまたはインデックスの所有者でなければなりません。オブジェクトがインデックスに依存する場合、エラーが発生し、インデックスは削除されません。 name 削除する索引の名前(オプションでスキーマ修飾名)。 このコマンドは、 name_idx というインデックスを削除します 。 DROP INDEX name_idx; 関連項目 名 DROP PACKAGE - パッケージを削除する シノプシス DROP PACKAGE [ BODY ] name 説明 DROP PACKAGE は既存のパッケージを削除します。このコマンドを実行するには、スーパーユーザーまたはパッケージの所有者でなければなりません。場合 BODY 指定され、パッケージ本体のみが削除されます-パッケージ仕様は削除されません。場合 BODY 省略され、パッケージ仕様部と本体の両方が削除されます。 パラメーター name 削除するパッケージの名前(スキーマ修飾名でも可)。 例 このコマンドを実行すると、 emp_admin パッケージ が削除され ます。 DROP PACKAGE emp_admin; 関連項目 名 DROP PROCEDURE - プロシージャを削除する シノプシス DROP PROCEDURE name 説明 DROP PROCEDURE は、既存のプロシージャーの定義を除去します。このコマンドを実行するには、スーパーユーザーまたはプロシージャの所有者でなければなりません。 パラメーター name 既存のプロシージャーの名前(スキーマ修飾名も可)。 例 次のコマンドは、 select_emp プロシージャを 削除し ます。 DROP PROCEDURE select_emp; 名 DROP PROFILE - ユーザー定義のプロファイルを削除する シノプシス DROP PROFILE [IF EXISTS] profile_name [CASCADE | RESTRICT]; 説明 IFを 含める 指定されたプロファイルが存在しない場合、サーバーにエラーをスローしないように指示する EXISTS 句。プロファイルが存在しない場合、サーバーは通知を出します。 オプションの CASCADE 句を 含めて 、プロファイルに現在関連付けられているユーザーをすべて デフォルトの プロファイル に再割り当てし、プロファイルを 削除します 。 オプションの RESTRICT 句を 含めて 、ロールに関連付けられたプロファイルを削除しないようにサーバーに指示します。これがデフォルト動作です。 パラメーター profile_name ドロップされるプロファイルの名前。 例 次の例では、 acctg_profile という名前のプロファイルを削除します 。 DROP PROFILE acctg_profile CASCADE; コマンドに関連付けられた最初の再関連付けどんな役割 acctg_profile 持つプロファイル default 、プロファイル、およびが低下 acctg_profile プロファイルを。 次の例では、 acctg_profile という名前のプロファイルを削除します 。 DROP PROFILE acctg_profile RESTRICT; この コマンド の RESTRICT 句は 、プロファイルに関連付けられているロールがある場合、 acctg_profile 削除しないようにサーバーに指示します 。 Advanced Serverには、 DROP QUEUE SQL コマンドで 追加の構文(Oracleでは提供されていません)が含まれています 。この構文は、 DBMS_AQADM に関連して使用でき ます 。 名 DROP QUEUE - 既存のキューを削除します。 シノプシス DROP 使用する 既存のキューを削除する QUEUE : DROP QUEUE [存在する場合] name 説明 DROP QUEUE 使用すると、スーパーユーザーまたは aq _ administrator _ role 特権を 持つユーザーが 既存のキューを削除できます。 パラメーター name ドロップされているキューの名前(スキーマ修飾名)。 IF EXISTS IF 含める キューが存在しない場合にエラーを返さないようにサーバーに指示する EXISTS 句。サーバーは通知を出します。 例 次の例は、 work_order という名前のキューを削除します 。 DROP QUEUE work_order; 関連項目 CREATE QUEUE 、 lang = EN-US> ALTER QUEUE Advanced Serverには、Oracleによって提供されていない追加の構文が DROP とともに含まれています QUEUE TABLE SQL コマンド。この構文は、 DBMS _ AQADM に関連して使用できます 。 名 DROP QUEUE TABLE - キューテーブルを削除します。 シノプシス DROP 使用する QUEUE キューテーブルを削除する TABLE : DROP QUEUE TABLE [ IF EXISTS ] name [, ...] 説明 DROP QUEUE TABLE スーパーユーザーまたはを持つユーザーことができます aq _ administrator _ role キュー表を削除する権限を。 パラメーター name 削除されるキュー表の名前(スキーマ修飾名)。 IF EXISTS IF 含める キュー表が存在しない場合にサーバーがエラーを戻さないように指示する EXISTS 節。サーバーは通知を出します。 CASCADE CASCADE キーワードを 含める キュー表に依存するオブジェクトを自動的に削除します。 RESTRICT RESTRICT キーワードを 含める オブジェクトが依存している場合は、キュー表の削除を拒否するようにサーバーに指示します。これがデフォルトです。 例 次の例では、 work_order_table という名前のキュー表と それに依存するすべてのオブジェクトを 削除します 。 DROP QUEUE TABLE work_order_table CASCADE; 関連項目 CREATE QUEUE TABLE 、 ALTER QUEUE TABLE DROP SYNONYM - シノニムを削除する DROP [PUBLIC] SYNONYM [ schema .] syn_name DROP SYNONYM 既存の同義語を削除します。このコマンドを実行するには、スーパーユーザーまたはシノニムの所有者で 、シノニムが存在するスキーマ に対して USAGE 権限 を持っている必要があります 。 syn_name syn_name は同義語の名前です。シノニム名はスキーマ内で一意でなければなりません。 schema schema は、シノニムが存在するスキーマの名前を指定します。 スキーマ修飾が可能な他のオブジェクトと同様に、検索パスに同じ名前の2つの同義語がある場合があります。削除する同義語の名前を明確にするには、スキーマ名を含めます。シノニムが DROP スキーマ修飾されていない限り SYNONYM コマンドを実行すると、Advanced Serverは検索パスで見つかった同義語の最初のインスタンスを削除します。 必要に応じて
public スキーマに 存在するシノニムを削除するには、 PUBLIC 句を使用します 。style = 'font-size:11.0pt'> DROP PUBLIC Oracleデータベースと互換性のある SYNONYM コマンドは、 public スキーマに あるシノニムを削除し ます。 DROP PUBLIC SYNONYM syn _ name ; 次の例では、同義語 personnel 削除します 。 DROP SYNONYM personnel; DROP ROLE - データベースロールを削除する DROP ROLE name [ CASCADE ] DROP ROLE は、指定された DROP ROLE 削除します。スーパーユーザー役割を削除するには、スーパーユーザーでなければなりません。スーパーユーザー以外のロールを削除するには、 CREATEROLE 権限 が必要 CREATEROLE 。 ロールは、クラスタのどのデータベースでも参照されている場合は削除できません。もしそうなら、エラーが発生します。ロールを削除する前に、所有するすべてのオブジェクトを削除(または所有権の再割り当て)し、ロールが付与されているすべての特権を取り消す必要があります。 役割に関係する役割メンバーシップを削除する必要はありません。 DROP ROLE は、他のロール内のターゲットロールのメンバーシップ、およびターゲットロール内の他のロールのメンバーシップを自動的に取り消します。他の役割は落とされず、影響を受けません。 または、ロールが所有するオブジェクトのみが、ロールが所有し、ロールと同じ名前のスキーマに属している 場合は 、 CASCADE オプションを指定できます。この場合、 DROP ROLE name CASCADE コマンド の発行者は スーパーユーザーでなければならず、名前付きロール、スキーマ、およびスキーマ内のすべてのオブジェクトが削除されます。 name 削除するロールの名前。 CASCADE 指定すると、ロールまたはスキーマに他の依存関係が存在しない限り、ロール(およびスキーマに属するロールが所有するすべてのオブジェクト)によって所有されているスキーマも削除されます。 例 ロールを削除するには: DROP ROLE admins; CREATE ROLE 、 SET ROLE 、 GRANT 、 REVOKE DROP SEQUENCE - シーケンスを削除する DROP SEQUENCE name [, ...] DROP SEQUENCE はシーケンス番号ジェネレータを削除します。このコマンドを実行するには、スーパーユーザーまたはシーケンスの所有者でなければなりません。 name シーケンスの名前(スキーマ修飾名も可)。 シーケンスを削除するには、 serial : DROP SEQUENCE serial; ALTER SEQUENCE CREATE SEQUENCE DROP TABLE - テーブルを削除する DROP TABLE name [CASCADE | RESTRICT | CASCADE CONSTRAINTS] DROP TABLE はデータベースからテーブルを削除します。その所有者だけがテーブルを破壊する可能性があります。表を破棄せずに行の表を空にするには、 DELETE 使用します 。 DROP TABLE 常にターゲット表に存在する索引、ルール、トリガー、および制約を削除します。 name 削除する表の名前(スキーマ修飾名も可)。 含める RESTRICT サーバが依存しているオブジェクトがある場合、テーブルをドロップすることを拒否するように指定するキーワードを。 これがデフォルト動作です。 DROP オブジェクトがテーブルに依存している場合、 TABLE コマンドはエラーを報告します。 テーブルに依存するオブジェクトを削除するに は、 CASCADE 句を 含め ます。 含める CASCADE CONSTRAINTS 句を使用して、Advanced Serverが指定された表の従属制約(他のオブジェクト型を除く)を削除するように指定します。 例 次のコマンドは、 依存関係のない emp という 名前のテーブルを削除します 。 DROP TABLE emp; DROP の結果 TABLE コマンドは、テーブルに依存関係があるかどうかによって異なります。ドロップ動作を指定して結果を制御できます。たとえば 、 items テーブルが orders テーブルに 依存 する2つのテーブル、 orders 、および items を作成する場合 は、 orders ます。 CREATE TABLE orders CREATE TABLE items Advanced Serverは 、指定した削除動作に応じて、 orders テーブルを 削除するときに次のいずれかの操作 を実行します。 ・ DROP TABLE orders を指定すると RESTRICT 、Advanced Serverはエラーを報告します。 ・ DROP TABLE orders CASCADE を指定すると 、Advanced Serverは orders テーブルと items テーブル を削除し ます。 ・ DROP TABLE orders CASCADE を指定すると、 DROP TABLE orders CASCADE CONSTRAINTS 、Advanced Serverはドロップされます orders テーブルをしてから、外部キーの指定を削除 items テーブルが、ドロップしない items テーブルを。 関連項目 名 DROP TABLESPACE - 表領域を削除する DROP TABLESPACE tablespacename DROP TABLESPACE は、システムから表スペースを除去します。 表スペースは、所有者またはスーパーユーザーだけが削除できます。表スペースを削除するには、その前にすべてのデータベース・オブジェクトが空でなければなりません。現在のデータベース内のオブジェクトが表領域を使用していない場合でも、他のデータベースのオブジェクトが表領域に存在する可能性があります。 tablespacename 表スペースの名前。 システムから employee_space という 表領域を削除するに は、次のようにします。 DROP TABLESPACE employee_space; 名 DROP TRIGGER - トリガーを削除する シノプシス DROP TRIGGER name 説明 DROP TRIGGER は、関連付けられたテーブルからトリガを削除します。このコマンドは、スーパーユーザーまたはトリガーが定義されているテーブルの所有者が実行する必要があります。 パラメーター name 削除するトリガーの名前。 例 トリガーを削除する emp_sal_trig : DROP TRIGGER emp_sal_trig; 関連項目 名 DROP TYPE - 型定義を削除する シノプシス DROP TYPE [ BODY ] name 説明 DROP TYPE は型定義を削除します。このコマンドを実行するには、スーパーユーザーまたはそのタイプの所有者でなければなりません。 オプションの BODY 修飾子は、オブジェクト型定義にのみ適用され、コレクション型および複合型には適用されません。場合 BODY 指定されている、唯一のオブジェクト型の本体は削除されます-オブジェクト型の仕様が削除されません。場合 BODY 省略され、オブジェクト型の仕様部と本体の両方が削除されます。 名前付きの型に依存する他のデータベースオブジェクトがある場合、型は削除されません。 パラメーター name 削除する型定義の名前。 例 オブジェクト型 addr_obj_typ ます。 DROP TYPE addr_obj_typ; ネストした表のタイプ budget_tbl_typ ます。 DROP TYPE budget_tbl_typ; CREATE TYPE 、 CREATE TYPE BODY DROP USER - データベースユーザーアカウントを削除する DROP USER name [ CASCADE ] DROP USER 指定されたユーザーを削除します。スーパーユーザーを削除するには、自分でスーパーユーザーである必要があります。スーパー以外のユーザーを削除するには、 CREATEROLE 権限 が必要 CREATEROLE 。 ユーザーがクラスタのどのデータベースでも参照されている場合、ユーザーを削除することはできません。もしそうなら、エラーが発生します。ユーザーを削除する前に、所有するすべてのオブジェクトを削除(または所有権の再割り当て)し、ユーザーに付与されているすべての特権を取り消す必要があります。 ただし、ユーザーに関係するロールメンバーシップを削除する必要はありません。 DROP USER は、ターゲットユーザーの他のロールおよび他のロールのターゲットユーザーのメンバーシップを自動的に取り消します。他の役割は落とされず、影響を受けません。 また、ユーザーが所有するオブジェクトのみが、ユーザーが所有し、ユーザーと同じ名前のスキーマに属している場合は、 CASCADE オプションを指定できます。この場合、 DROP USER name CASCADE コマンド の発行者は スーパーユーザーでなければならず、スキーマ内の指定されたユーザー、スキーマおよびすべてのオブジェクトが削除されます。 パラメーター name 削除するユーザーの名前。 CASCADE 指定すると、ユーザーまたはスキーマに対する他の依存関係が存在しない限り、ユーザー(およびスキーマに属するユーザーが所有するすべてのオブジェクト)と同じ名前のスキーマも削除されます。 例 オブジェクトを所有しておらず、他のオブジェクトに権限が与えられていないユーザーアカウントを削除するには: DROP USER john; ユーザーアカウント john を削除する には、どのオブジェクトにも権限が与えられておらず 、ユーザー john が所有 するスキーマ john 以外のオブジェクトを所有していない 場合は、 john : DROP USER john CASCADE; 関連項目 DROP VIEW - ビューを削除する DROP VIEW name DROP VIEW は既存のビューを削除します。このコマンドを実行するには、データベーススーパーユーザーまたはビューの所有者である必要があります。他のオブジェクトがこのビューに依存している場合(ビューのビューなど)、名前付きビューは削除されません。 DROP の形式 Oracleと互換性のある VIEW コマンドは、 CASCADE 句を サポートしていません 。ビューとその依存関係を削除するには、PostgreSQL互換の DROP 形式を使用します V IEW コマンド。詳細については、PostgreSQLのコアドキュメントを参照してください。 https://www.postgresql.org/docs/10/static/sql-dropview.html name 削除するビューの名前(スキーマ修飾名も可) このコマンドを実行すると、 dept_30 というビューが削除され dept_30 。 DROP VIEW dept_30; 関連項目
名 EXEC シノプシス EXEC function_name ['('[ argument _ list ]')'] 説明 EXECUTE 。 パラメーター procedure_name procedure_name は(オプションでスキーマ修飾された)関数名です。 argument_list argument_list は、関数が必要とする引数のコンマ区切りのリストを指定します。 argument_list 各メンバーは 、関数が期待する仮引数に対応することに 注意してください 。各仮引数は、 IN パラメーター、 OUT パラメーター、または INOUT パラメーターです。 例 EXEC ステートメントは、関数で必要な引数に応じて、いくつかのいずれかの形式を取ることがあります。 EXEC update_balance; GRANT - アクセス特権を定義する GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON tablename TO { username | groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { { INSERT | UPDATE | REFERENCES } ( column [, ...]) } [, ...] ON tablename TO { username | groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { SELECT | ALL [ PRIVILEGES ] } ON sequencename TO { username | groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION progname ( [ [ argmode argname ] argtype ] [、...]) TO { username | groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURE progname [ ( [ [ argmode ] [ argname ] argtype ] [, ...] ) ] TO { username | groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON PACKAGE packagename TO { username | groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT role [, ...] TO { username | groupname | PUBLIC } [, ...] [ WITH ADMIN OPTION ] GRANT { CONNECT | RESOURCE | DBA } [, ...] TO { username | groupname } [, ...] [ WITH ADMIN OPTION ] GRANT CREATE [ PUBLIC ] DATABASE LINK TO { username | groupname } GRANT DROP PUBLIC DATABASE LINK TO { username | groupname } GRANT EXEMPT ACCESS POLICY TO { username | groupname } GRANT データベースオブジェクト(テーブル、ビュー、シーケンス、またはプログラム)に権限を付与します1、役割のメンバーシップを付与1、およびシステム権限を付与し1:コマンドには3つの基本的なバリエーションがあります。これらの変種は多くの点で似ていますが、別々に記述するのに十分です。 Advanced Serverでは、ユーザーとグループの概念は、 役割 と呼ばれる単一のタイプのエンティティに統一されてい ます。このコンテキストでは、 ユーザー は LOGIN 属性 を持つロールです。ロールを 使用してセッションを作成し、アプリケーションに接続することができます。 グループは ありません役割である LOGIN 役割は、セッションを作成したり、アプリケーションに接続するために使用することはできません-属性を。 ロールは1つ以上の他のロールのメンバーになることがあるので、グループに属するユーザーの従来の概念は依然として有効です。しかし、ユーザおよびグループの一般化により、ユーザはユーザに「属し」、グループには「属し」てもよく、グループはユーザに「属し」てもよい。ユーザー名とグループ名は同じ名前空間を共有するため、 GRANT コマンド で受給者がユーザーかグループかを区別する必要はありません 。 この GRANT コマンドの 変種は、 データベースオブジェクトに対する特定の権限をロールに付与します。これらの特権は、既に付与されている特権に追加されます。 キーワード PUBLIC は、後で作成されるロールを含むすべてのロールに権限が付与されることを示します。 PUBLIC は、常にすべての役割を含む暗黙的に定義されたグループと考えることができます。特定の役割は、直接付与される権限、現在メンバーになっている役割に付与された権限、 PUBLIC 付与された権限の合計を持ち ます。 場合 WITH GRANT OPTION 指定され、特権の受信者は、今度は他の人にそれを与えることができます。許可オプションがなければ、受信者はそれを行うことができません。 PUBLIC に付与することはできません 。 所有者はデフォルトですべての特権を持っているため、オブジェクトの所有者(通常は作成したユーザー)に特権を与える必要はありません。ただし、所有者は、安全のために自分の特権の一部を取り消すことができます。オブジェクトを削除したり、定義を変更する権利は、付与可能な特権では説明されません。それは所有者に内在しており、付与または取り消すことはできません。所有者は暗黙的にオブジェクトのすべての許可オプションも持っています。 オブジェクトのタイプに応じて、初期のデフォルト権限にはいくつかの権限の付与
PUBLIC 。デフォルトでは、表のパブリック・アクセスはなく 、関数、プロシージャー、およびパッケージの EXECUTE 特権があります。オブジェクトの所有者はもちろんこれらの特権を取り消すことができます。 (最大限のセキュリティ を実現するには、オブジェクトを作成するトランザクションと同じトランザクションで REVOKE を実行します。別のユーザーがオブジェクトを使用できるウィンドウはありません)。 可能な特権は次のとおりです。 SELECT 指定した表、ビュー、またはシーケンスの任意の列からの SELECT を 許可し ます。シーケンスの場合、この権限によって currval 関数 も使用でき ます。 INSERT 指定したテーブルに新しい行の INSERT を 許可し ます。 UPDATE 指定された表の列の UPDATE を 許可し ます。 SELECT ... FOR UPDATE には、( SELECT 特権 以外の ) この特権も必要 です。 DELETE 指定されたテーブルから行の DELETE を 許可し ます。 REFERENCES 外部キー制約を作成するには、参照テーブルと参照テーブルの両方にこの権限を持たせる必要があります。 EXECUTE 指定されたパッケージ、プロシージャ、または関数の使用を許可します。パッケージに適用すると、パッケージのパブリックプロシージャ、パブリック関数、パブリック変数、レコード、カーソル、その他のパブリックオブジェクトとオブジェクトタイプのすべてを使用できます。これは、関数、プロシージャ、およびパッケージに適用できる唯一の特権です。 EXECUTE 権限 を付与するためのAdvanced Serverの構文は 、Oracleデータベースと完全には互換性がありません。 Advanced Serverでは、 FUNCTION 、 PROCEDURE 、または PACKAGE いずれかの キーワードでプログラム名を修飾 する必要がありますが、これらのキーワードはOracleでは省略する必要があります 。関数の場合、 Advanced Serverでは 、関数名の後に すべての入力( IN 、 IN OUT )引数データ型(関数引数がない場合は空の括弧を含む)が必要です。手続きの場合、手続きに1つ以上の入力引数がある場合は、すべての入力引数データ型を指定する必要があります。 Oracleでは、関数とプロシージャのシグネチャを省略する必要があります。これは、すべてのプログラムがOracleでは同じ名前空間を共有するため、関数、プロシージャ、およびパッケージは、 Advanced Serverで独自の名前空間を持ち、プログラム名のオーバーロードをある程度許容するためです。 ALL PRIVILEGES 使用可能なすべての特権を一度に付与します。 他のコマンドで必要な権限は、それぞれのコマンドのリファレンスページにリストされています。 GRANT コマンドの この変種は、 ロールのメンバーシップを1つ以上の他のロールに付与します。ロールに所属する権限は、そのメンバーのそれぞれに伝達されるため、ロール内のメンバーシップは重要です。 場合は WITH ADMIN OPTION 指定され、メンバーは他の人に役割でターン助成金メンバーシップ、および中にも役割のメンバシップを取り消すことができます。 adminオプションがなければ、通常のユーザーはそれを行うことができません。 データベーススーパーユーザーは、任意の役割のメンバーシップを誰にでも付与または取り消すことができます。 CREATEROLE 権限 を持つロール は、スーパーユーザーではないロールのメンバーシップを付与または取り消すことができます。 次の意味を持つ3つの事前定義された役割があります。 CONNECT CONNECT ロールを 付与 することは、権限受領者に LOGIN 特権 を与えることと同じ です。付与者は CREATEROLE 特権を 持っていなければなりません 。 RESOURCE 付与 RESOURCE 役割は、許可に相当し CREATE と USAGE 権限を付与と同じ名前を持つスキーマの権限を。このスキーマは、付与が行われる前に存在していなければなりません。付与者は、 このスキーマ に対する CREATE 権限 または USAGE 権限を権限受領者 に付与する権限を持っていなければなりません 。 DBA DBA ロールを 付与 することは、受領者をスーパーユーザーにすることと同じです。付与者はスーパーユーザーでなければなりません。 REVOKE コマンドは、アクセス権限を取り消すために使用されます。 オブジェクトの非所有者がオブジェクトの 権限 を GRANT しようとする と、そのオブジェクトに権限が何もない場合、コマンドは完全に失敗します。特権が利用可能である限り、コマンドは続行されますが、ユーザーが許可オプションを持つ特権のみを許可します。 GRANT ALL PRIVILEGES 一切グラントオプションが開催されていない場合は特に、コマンドで指定された権限のいずれかのためのグラントオプションが開催されていない場合は、他の形態は、警告を発行しますながらフォームは、警告メッセージを発行します。 (原則として、これらのステートメントはオブジェクト所有者にも適用されますが、所有者は常にすべての付与オプションを保持しているため、このケースは決して発生しません)。 データベーススーパーユーザは、オブジェクト権限設定に関係なく、すべてのオブジェクトにアクセスできます。これは Unixシステムの root 権限に匹敵し ます。 root と 同様に 、絶対に必要な場合を除いてスーパーユーザーとして操作することは賢明ではありません。 スーパーユーザーが GRANT または REVOKE コマンド を発行することを選択した場合、 コマンドは影響を受けたオブジェクトの所有者によって発行されたかのように実行されます。特に、そのようなコマンドを介して付与された権限は、オブジェクト所有者によって付与されたように見えます。 (ロールのメンバーシップの場合、メンバーシップはロールを含むロール自体によって付与されているように見えます)。 GRANT および REVOKE は、影響を受けたオブジェクトの所有者ではなく、そのオブジェクトを所有するロールのメンバーであるか 、オブジェクトに対する WITH GRANT OPTION 権限を保持するロールのメンバーであるロールによって も実行できます。この場合、権限は、オブジェクトを実際に所有するロールによって付与されたものとして記録されるか、 WITH GRANT OPTION 権限を保持します 。 たとえば、テーブル t1 がロール g1 によって所有されて いて、ロール u1 がメンバーである場合、 u1 は t1 特権 を u2 付与できます が、これらの特権は g1 によって直接付与されたように見え ます。役割 g1 他のメンバーは 後で取り消すことができます。 GRANT を実行しているロール が、複数のロール・メンバーシップ・パスを介して間接的に必要な権限を保持している場合は、どのロールが含まれているかが不許可になります。そのような場合は、 SET を使用することをお SET します ROLE を GRANT を実行する特定の役割にすることができます 。 現在、 Advanced Serverでは、表の個々の列に対する権限の付与または取消しはサポートされていません。考えられる回避策の1つは、目的の列のみを持つビューを作成し、そのビューに特権を与えることです。 例 GRANT INSERT ON emp TO PUBLIC; ビュー salesemp 上の すべての利用可能な権限をユーザー mary に salesemp : GRANT ALL PRIVILEGES ON salesemp TO mary; スーパーユーザーまたは emp の所有者が実行すると、上記の権限はすべて実際に付与されますが、他のユーザーによって実行されると、他のユーザー が付与オプションを持つ権限のみを付与することに 注意してください 。 ロール admins メンバーシップ をユーザ joe 付与する : GRANT admins TO joe; 付与 CONNECT ユーザーに権限を joe : GRANT CONNECT TO joe; 関連項目 この GRANT コマンドの 変種は、 データベース内で特定のシステム操作を実行する役割を果たします。システム権限は、必ずしも1つのスキーマの範囲内にない特定のデータベースオブジェクトを作成または削除する機能に関連しています。データベーススーパーユーザーだけがシステム特権を許可できます。 CREATE [PUBLIC] DATABASE LINK CREATE [PUBLIC] DATABASE LINK 権限を使用すると、指定したロールでデータベースリンクを作成できます。 ロールがパブリック・データベース・リンクを作成できるようにするには 、 PUBLIC キーワードを 含め ます。 指定されたロールがプライベート・データベース・リンクを作成できるように するには、 PUBLIC キーワードを 省略し ます。 DROP PUBLIC DATABASE LINK DROP PUBLIC DATABASE LINK 権限を使用すると、ロールがパブリック・データベース・リンクを削除できます。プライベート・データベース・リンクを削除するためのシステム権限は必要ありません。プライベートデータベースリンクは、リンク所有者またはデータベーススーパーユーザーによって削除される可能性があります。 EXEMPT ACCESS POLICY EXEMPT ACCESS POLICY 権限を使用すると、ロールはターゲット・データベース・オブジェクトに関連付けられているポリシー・ファンクションを起動せずにSQLコマンドを実行できます。つまり、その役割はデータベース内のすべてのセキュリティポリシーから免除されます。 EXEMPT ACCESS POLICY 権限は持っている役割へのメンバーシップによって継承ではありません EXEMPT ACCESS POLICY 特権を。たとえば、次のような一連 GRANT コマンドは、ユーザーにはなりません joe 取得 EXEMPT ACCESS POLICY にもかかわらず、特権 joe にメンバーシップを付与され enterprisedb 付与された役割、 EXEMPT ACCESS POLICY 権限を: GRANT EXEMPT ACCESS POLICY TO enterprisedb; GRANT enterprisedb TO joe; ロールに EXEMPT ACCESS POLICY 特権 がある場合 、システムカタログテーブル pg_authid の rolpolicyexempt カラムは true 設定され true 。 例 グラントは、 CREATE PUBLIC DATABASE LINK ユーザーに権限を joe : GRANT CREATE PUBLIC DATABASE LINK TO joe; グラント DROP PUBLIC DATABASE LINK ユーザーに権限を joe : GRANT DROP PUBLIC DATABASE LINK TO joe; 付与 EXEMPT ACCESS POLICY ユーザーに権限を joe : GRANT EXEMPT ACCESS POLICY TO joe; ALTER ROLEコマンドを使用したシステム権限の割り当て Advanced Serverの ALTER ROLE コマンドは、以下のものを割り当てるために使用できる構文もサポートしています。 ・ パブリックまたはプライベートのデータベースリンクを作成するために必要な特権 ・ パブリック・データベース・リンクを削除するために必要な特権 ・ EXEMPT ACCESS POLICY 特権。 ALTER ROLE 構文は、Oracleデータベースと互換性のあるそれぞれのコマンドと機能的に同等です。 関連項目 リボーク 、 アルターロール INSERT - テーブルに新しい行を作成する INSERT INTO table [@ dblink ] [ ( column [, ...] ) ] { VALUES ( { expression | DEFAULT } [, ...] ) [ RETURNING return_expression [, ...] { INTO { record | variable [, ...] } | BULK COLLECT INTO collection [, ...] } ] | query } INSERT 使用すると、新しい行を表に挿入できます。クエリの結果として、一度に1行または複数の行を挿入できます。 ターゲットリストの列は、任意の順序でリストされます。ターゲットリストに存在しない各列は、デフォルト値、宣言されたデフォルト値またはnullのいずれかを使用して挿入されます。 各列の式が正しいデータ型でない場合、自動型変換が試行されます。 RETURNING INTO { record | variable [, ...] } 句は、 INSERT コマンドがSPLプログラム内で使用されている場合、および VALUES 句が使用されている 場合にのみ指定できます 。 RETURNING BULK COLLECT INTO collection [, ...] 場合句にのみ指定することができる INSERT コマンドはSPLプログラム内で使用されています。複数の collection が BULK COLLECT INTO 句の ターゲットとして指定されている 場合、各 collection は単一のスカラーフィールドで構成されている必要があります 。 つまり、 collection はレコードであってはなりません。 挿入された行ごとに評価される return_expression は、最初の要素から始まる collection 要素になり ます。 collection 内の既存の行はすべて 削除されます。結果セットが空の場合、 collection は空に なります。 表に挿入するには、その表に対する INSERT 特権 が必要 です。 query 句を 使用して query から行を挿入 する場合 は、照会で 使用されるすべての表に対して SELECT 特権 も必要 です。 table 既存の表の名前(スキーマ修飾名も可)。 dblink リモートデータベースを識別するデータベースリンク名。 CREATE 参照してください DATABASE LINK コマンドを使用して、データベース・リンクの情報を取得します。 column table 内の列の名前 。 expression column に割り当てる式または値 。 DEFAULT この列にはデフォルト値が設定されます。 query 挿入される行を提供 するクエリ( SELECT 文)。 構文の説明については 、 SELECT コマンドを 参照してください 。 return_expression table 1つ以上の列を含む式 。 return_expression で table 列名を 指定した 場合、 return_expression が評価された ときの列の値 は次のように決定されます。 return_expression で 指定された列に INSERT コマンドの 値が割り当てられている場合 、割り当てられた値が return_expression の評価に使用され ます。 return_expression で 指定された列に INSERT コマンドの 値が割り当てられておらず 、表の列定義の列のデフォルト値がない場合は、 return_expression の評価にNULLが使用されます 。 return_expression で 指定された列に INSERT コマンドで 値が割り当てられておらず 、表の列定義に列のデフォルト値がある場合、 return_expression の評価ではデフォルト値が使用されます 。 record 評価された return_expression が割り当てられる フィールドのレコード 。最初の return_expression は record の最初のフィールドに 割り当てられ 、2番目の return_expression は record の2番目のフィールドに割り当てられ ます。 record のフィールド 数は式の数と完全に一致しなければならず、フィールドは割り当てられた表現。 variable 評価された return_expression が割り当てられる 変数 。複数の return_expression と variable が指定されている場合、最初の return_expression が最初の variable に 割り当てられ 、2番目の return_expression が2番目の variable 割り当てられ ます INTO キーワードの 後に指定される変数 の数は、 RETURNING キーワードと変数は、割り当てられた式と型互換性がなければなりません。 collection 評価された return_expression から要素が作成されるコレクション 。単一フィールドのコレクションまたはレコードタイプのコレクションである単一のコレクション、または複数のコレクションが存在する場合があります。その場合、各コレクションは単一のフィールドで構成されなければなりません。戻り式の数は、指定されたすべてのコレクションのフィールド数と順番に一致する必要があります。それぞれの対応する return_expression および collection フィールドは型互換性がなければなりません。 表 emp 単一の行を挿入します 。 INSERT INTO emp VALUES (8021,'JOHN','SALESMAN',7698,'22-FEB-07',1250,500,30); この2番目の例では、列 comm は省略されているため、デフォルト値はnullになります。 INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, deptno) VALUES (8022,'PETERS','CLERK',7698,'03-DEC-06',950,30); 3番目の例では、 値を指定するのではなく 、 hiredate および comm 列に DEFAULT 句を 使用して います。 INSERT INTO emp VALUES (8023,'FORD','ANALYST',7566,NULL,3000,NULL,20); この例では、部門名用の表を作成し、次に dept 表の dname 列 から選択して表に挿入し ます。 CREATE TABLE deptnames ( deptname VARCHAR2(14) ); INSERT INTO deptnames SELECT dname FROM dept; 名 LOCK - テーブルをロックする シノプシス LOCK TABLE name [, ...] IN lockmode MODE [ NOWAIT ] どこ lockmode 次のいずれかです。 ROW SHARE | ROW EXCLUSIVE | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE 説明 LOCK TABLE 、テーブル・レベルのロックを取得し、必要に応じて競合するロックが解放されるのを待機します。 NOWAIT が指定されている 場合 、 LOCK TABLE は目的のロックを取得するのを待機せず、直ちに取得できない場合は、コマンドが中断され、エラーが発生します。取得されると、ロックは現在のトランザクションの残りの間保持されます。 ( UNLOCK はありません TABLE コマンド。ロックは常にトランザクション終了時に解放されます)。 表を参照するコマンドに対して自動的にロックを取得する場合、 Advanced Serverは常に最小限の制限付きロック・モードを使用します。 LOCK TABLE は、より制限的なロックが必要な場合があります。たとえば、アプリケーションがコミットされた分離レベルでトランザクションを実行し、トランザクション中にテーブル内のデータが安定していることを保証する必要があるとします。これを達成するには、 クエリを実行する前にテーブルに対して SHARE ロックモードを 取得することができます 。これは、同時データ変更を防止し、それ以降は、コミットされたデータの安定したビューを参照してくださいテーブルの読み込みを保証します SHARE 持つロックモードと競合 ROW EXCLUSIVE 作家によって取得したロック、そしてあなた LOCK TABLE 名前 IN SHARE MODE 文は任意の同時保有するまで待機します ROW EXCLUSIVE モードロックはコミットまたはロールバックします。したがって、ロックを取得すると、コミットされていない未処理の書き込みはありません。さらに、あなたがロックを解除するまで、どれも始めることはできません。 直列化可能な分離レベルでトランザクションを実行するときに同様の効果を得るには、 データ変更ステートメントを実行する前に LOCK TABLE ステートメントを実行する必要があります。シリアライズ可能なトランザクションのデータビューは、最初のデータ変更ステートメントの開始時に固定されます。後で LOCK TABLE を実行しても同時書き込みは防止されますが、トランザクションが読み取る内容が最新のコミットされた値に対応することは保証されません。 この種のトランザクションがテーブル内のデータを変更する場合は、 SHARE ROW EXCLUSIVE モードの代わりに SHARE SHARE ROW EXCLUSIVE ロックモードを 使用する必要があり ます。 これにより、このタイプのトランザクションは一度に1つだけ実行されます。これがなければ、デッドロックが発生する可能性があります.2つのトランザクションが SHARE モードを取得 し、実際に更新を実行 するために ROW EXCLUSIVE モードを 取得でき ない可能性があり ます。 (トランザクション自体のロックは競合することはないので、 SHARE モードを 保持しているときに トランザクションは ROW EXCLUSIVE モードを 取得でき ますが、他の誰かが SHARE モードを 保持している場合は 無効になります)。 1つのオブジェクトに対して複数のロック・モードが関与している場合、トランザクションは常に最も制限の厳しいモードを最初に取得する必要があります。 パラメーター name ロックする既存のテーブルの名前(スキーマ修飾名でも可)。 コマンド LOCK TABLE a, b ; LOCK TABLE a と等価 です。 LOCK TABLE b 。テーブルは、 LOCK TABLE コマンドで 指定された順序で1つずつロックされます 。 lockmode ロックモードは、このロックがどのロックと競合するかを指定します。 ロック・モードが指定されていない場合、サーバーは最も制限の厳しい ACCESS EXCLUSIVE モードを使用します 。 ( ACCESS EXCLUSIVE はOracleデータベースと互換性がありません ACCESS EXCLUSIVE Serverでは、この構成モードでは、ロックされた表にどのような方法でもアクセスすることができません)。 NOWAIT ことを指定 LOCK TABLE 指定されたロックがすぐにトランザクションが中止され、待つことなく取得できない場合:任意の競合するロックが解除されるのを待つべきではありません。 ノート すべての形式の LOCK は、 UPDATE および/または DELETE 権限が 必要です 。 LOCK TABLE
トランザクションが終了するとすぐにロックが解除されるため、トランザクションブロック内でのみ有効です。 トランザクションブロックの外に出現する LOCK TABLE コマンドは、自己完結型のトランザクションを形成するので、ロックは取得されるとすぐに削除されます。 LOCK TABLE はテーブルレベルのロックのみを処理するため、 ROW を 含むモード名 はすべて誤った 名前になります 。これらのモード名は、一般に、ロックされたテーブル内で行レベルのロックを取得するというユーザの意図を示すものとして読まれるべきです。また、 ROW EXCLUSIVE モードは共有可能なテーブルロックです。 LOCK TABLE に関する限り、 すべてのロックモードは同じセマンティクスを持ちますが 、どのモードがどのモードと矛盾するかというルールが異なります。 REVOKE - アクセス権を削除する REVOKE { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON tablename FROM { username | groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE { SELECT | ALL [ PRIVILEGES ] } ON sequencename FROM { username | groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION progname ( [ [ argmode ] [ argname ] argtype ] [, ...] ) FROM { username | groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURE progname [ ( [ [ argmode ] [ argname ] argtype ] [, ...] ) ] FROM { username | groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON PACKAGE packagename FROM { username | groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE role [, ...] FROM { username | groupname | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE { CONNECT | RESOURCE | DBA } [, ...] FROM { username | groupname } [, ...] REVOKE CREATE [ PUBLIC ] DATABASE LINK FROM { username | groupname } REVOKE DROP PUBLIC DATABASE LINK FROM { username | groupname } REVOKE EXEMPT ACCESS POLICY FROM { username | groupname } REVOKE コマンドは、1つの以上のロールから以前に付与された権限を取り消します。キーワード PUBLIC は、すべてのロールの暗黙的に定義されたグループを指します。 特権タイプの意味 については、 GRANT コマンドの 説明を参照してください 。 特定のロールには、そのロールに直接付与された特権、現在のロールに付与されている特権、 PUBLIC 付与されている特権が加算され ます。したがって、たとえば PUBLIC から SELECT 権限を 取り消し ても、必ずしもすべてのロールが オブジェクトに対して SELECT 権限 を失っているわけではありません。 直接または別のロールを介して付与されているロールには引き続き権限が与えられます。 許可オプションで特権が付与されていた場合、その特権の認可オプションは、特権自体と同様に取り消されます。 ユーザーが付与オプション付きの特権を保持し、それを他のユーザーに付与した場合、他のユーザーが保持する特権は従属特権と呼ばれます。最初のユーザーが保持する特権または許可オプションが取り消されていて、従属特権が存在する場合、 CASCADE が指定さ れていれば、それらの従属特権も取り消され ます。そうしないと、取り消しアクションは失敗します。この再帰的取り消しは、この REVOKE コマンドの 対象となるユーザーにトレーサブルである一連のユーザーを通じて付与された権限にのみ影響します 。したがって、影響を受けるユーザーは、他のユーザーから権限を付与されていれば、その権限を効果的に保持できます。 注意 : CASCADE は、Oracleデータベースと互換性のあるオプションではありません。デフォルトでは、 Oracleは常に従属権限をカスケードしますが、 Advanced Serverでは CASCADE キーワードを明示的に指定する 必要があります 。 そうしないと、 REVOKE コマンドは失敗します。 役割のメンバーシップを取り消すと、 代わり に GRANT OPTION が ADMIN OPTION と呼ばれます が、動作は似ています。 ユーザーは、そのユーザーが直接付与した権限のみを取り消すことができます。たとえば、ユーザー A がユーザー B 付与オプション付きの特権を付与し 、ユーザー B がそれをユーザー C に付与した場合 、ユーザー A は C から直接特権を取り消すことはできません 。代わりに、ユーザ A 、ユーザからのグラントオプションを取り消すことができ B および使用 CASCADE 特権がユーザーから取り消さ順番になるように、オプションを C 。両方の場合は、別の例では、 A と B に同じ権限を付与している C 、 A 自分の付与を取り消すことはできませんが、 B ので、の助成金 C まだ効果的に権限を持つことになります。 オブジェクトの非所有者がオブジェクトの 権限 を REVOKE しようとする と、そのオブジェクトに特権がない場合、コマンドは完全に失敗します。権限がある限り、コマンドは続行されますが、ユーザーが許可オプションを持っている権限のみが取り消されます。 REVOKE ALL PRIVILEGES 一切グラントオプションが開催されていない場合は特に、コマンドで指定された権限のいずれかのためのグラントオプションが開催されていない場合は、他の形態は、警告を発行しますながらフォームは、警告メッセージを発行します。 (原則として、これらのステートメントはオブジェクト所有者にも適用されますが、所有者は常にすべての付与オプションを保持しているため、このケースは決して発生しません)。 スーパーユーザーが GRANT または REVOKE コマンド を発行することを選択した場合、 コマンドは影響を受けたオブジェクトの所有者によって発行されたかのように実行されます。すべての特権は最終的に(おそらく間接的に許可オプションの連鎖を介して)オブジェクト所有者から来るので、スーパーユーザーはすべての特権を取り消すことができますが、これ は上記のよう に CASCADE を 使用する必要があります 。 REVOKE は、影響を受けるオブジェクトの所有者ではなく、オブジェクトを所有するロールのメンバであるロール、または オブジェクトに対する WITH GRANT OPTION 権限を保持するロールのメンバであるロールによって も実行できます。この場合、コマンドは、オブジェクトを実際に所有しているロールによって発行されたかのように実行されるか、 WITH GRANT OPTION 権限を保持します 。たとえば、テーブル t1 がロール g1 によって所有されて いて、ロール u1 がメンバーである場合、 u1 は g1 によって付与されたとして記録され た t1 特権を取り消すことができ ます。これには、 g1 他のメンバーだけでなく 、 u1 によって行われたグラント も含まれ ます。 REVOKE を実行しているロール が、複数のロール・メンバーシップ・パスを介して間接的に REVOKE 保持している 場合は、ロール を含むどのコマンドを実行するかは不特定です。そのような場合は、 SET を使用することをお SET します ROLE あなたが REVOKE をしたい特定の役割になります 。そうしないと、意図した特権以外の特権が取り消されたり、何も取り消されたりしないことがあります。 注:Advanced Server ALTER ROLE コマンドは、パブリックまたはプライベート・データベース・リンクを作成するために必要なシステム権限を破棄する構文またはファイングレイン・アクセス制御ポリシー( DBMS _ RLS )の 除外もサポートしています 。 ALTER ROLE 構文は、それぞれの REVOKE コマンド と機能的に同等 であり、Oracleデータベースと互換性があります。 例 表 emp のパブリックに対する挿入権限を取り消します 。 REVOKE INSERT ON emp FROM PUBLIC; ビュー salesemp 上の ユーザー mary からのすべての特権を取り消します 。 REVOKE ALL PRIVILEGES ON salesemp FROM mary; これは実際には、「 私が与えたすべての特権を取り消す 」ことを意味することに注意してください。 ユーザ joe から ロール admins メンバーシップを取り消し ます 。 REVOKE admins FROM joe; ユーザー joe から CONNECT 権限を 取り消し ます 。 REVOKE CONNECT FROM joe; ユーザー joe から CREATE DATABASE LINK 権限を 取り消し ます 。 REVOKE CREATE DATABASE LINK FROM joe; ユーザー joe から EXEMPT ACCESS POLICY 権限を 取り消し ます 。 REVOKE EXEMPT ACCESS POLICY FROM joe; 関連項目 ROLLBACK - 現在のトランザクションを中断する ROLLBACK [ WORK ] ROLLBACK は現在のトランザクションをロールバックし、トランザクションによって行われたすべての更新を破棄します。 WORK オプションのキーワード - 効果はありません。 COMMIT を 使用して 、トランザクションを正常に終了します。 トランザクション内でないときに ROLLBACK 発行 することは問題ありません。 すべての変更を中止するには: ROLLBACK; 関連項目 コミット 、 ロールバックからSAVEPOINT 、 SAVEPOINT ROLLBACK TO SAVEPOINT - セーブポイントにロールバックする ROLLBACK [ WORK ] TO [ SAVEPOINT ] savepoint_name セーブポイントが確立された後に実行されたすべてのコマンドをロールバックします。セーブポイントは有効なままで、必要に応じて後でロールバックすることができます。 ROLLBACK TO SAVEPOINT は、指定されたセーブポイントの後に確立されたすべてのセーブポイントを暗黙的に破棄します。 savepoint_name ロールバックするセーブポイント。 確立されていないセーブポイント名を指定するとエラーになります。 ROLLBACK TO SAVEPOINT はSPLプログラムではサポートされていません。 セーブポイントに実行したコマンドの効果を元に戻すには depts 設立されました: \set AUTOCOMMIT off INSERT INTO dept VALUES (50, 'HR', 'NEW YORK'); SAVEPOINT depts; INSERT INTO emp (empno, ename, deptno) VALUES (9001, 'JONES', 50); INSERT INTO emp (empno, ename, deptno) VALUES (9002, 'ALICE', 50); ROLLBACK TO SAVEPOINT depts; SAVEPOINT - 現在のトランザクション内に新しいセーブポイントを定義する SAVEPOINT savepoint_name SAVEPOINT は、現在のトランザクション内に新しいセーブポイントを確立します。 セーブポイントは、トランザクション内の特別なマークで、確立後に実行されるすべてのコマンドがロールバックされ、セーブポイント時のトランザクション状態に復元されます。 savepoint_name セーブポイントに与えられる名前。 ROLLBACK 使用する TO SAVEPOINT はセーブポイントにロールバックします。 セーブポイントは、トランザクションブロック内でのみ確立できます。トランザクション内に複数のセーブポイントが定義されている可能性があります。 以前のセーブポイントと同じ名前の別のセーブポイントが確立されると、古いセーブポイントが保持されますが、ロールバック時にはより新しいセーブポイントだけが使用されます。 SAVEPOINT はSPLプログラムではサポートされていません。 セーブポイントを確立し、後で確立された後に実行されるすべてのコマンドの効果を元に戻すには: \set AUTOCOMMIT off INSERT INTO dept VALUES (50, 'HR', 'NEW YORK'); SAVEPOINT depts; INSERT INTO emp (empno, ename, deptno) VALUES (9001, 'JONES', 50); INSERT INTO emp (empno, ename, deptno) VALUES (9002, 'ALICE', 50); SAVEPOINT emps; INSERT INTO jobhist VALUES (9001,'17-SEP-07',NULL,'CLERK',800,NULL,50,'New Hire'); INSERT INTO jobhist VALUES (9002,'20-SEP-07',NULL,'CLERK',700,NULL,50,'New Hire'); ROLLBACK TO depts; COMMIT; 上記のトランザクションは行を dept テーブルに コミットし ますが、 emp テーブル と jobhist テーブル への挿入 はロールバックされます。 コミット 、 ロールバック 、 ロールバックからSAVEPOINT SELECT - テーブルまたはビューから行を取得する SELECT [ optimizer_hint ] [ ALL | DISTINCT ] * | expression output_name ] [、...] FROM from_item [, ...] [ WHERE condition ] [ [ START WITH start_expression ] CONNECT BY { PRIOR parent_expr = child_expr | child_expr = PRIOR parent_expr } [ ORDER SIBLINGS BY expression [ ASC | DESC ] [, ...] ] ] [ GROUP BY { expression | ROLLUP ( expr_list ) | CUBE ( expr_list ) | GROUPING SETS ( expr_list ) } [, ...] [ LEVEL ] ] [ HAVING condition [, ...] ] [ { UNION [ ALL ] | INTERSECT | MINUS } select ] [ ORDER BY expression [ ASC | DESC ] [, ...] ] [ FOR UPDATE [WAIT n |NOWAIT|SKIP LOCKED]] どこ from_item のいずれかになります。 table_name [@ dblink ] [ alias ] ( select ) alias from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ] SELECT は、1つまたは複数のテーブルから行を取得します。 SELECT の一般的な処理は 次のとおりです。 1。 FROM リストの すべての要素 が計算されます。 ( FROM リストの 各要素 は、実表または仮想表です。) FROM リストに 複数の要素が指定されている場合 、それらは相互に結合されます。 (下記の FROM 句を 参照してください 。) 2。 場合は WHERE 句が指定され、条件を満たさないすべての行は出力から除外されています。 ( 下の WHERE 句を 参照してください 。) 3。 場合 GROUP BY 句が指定され、出力が1つまたは複数の値に一致する行のグループに分割されます。 HAVING 句が存在する 場合、 指定された条件を満たさないグループは削除されます。 ( GROUP 参照 BY 節と HAVING 節を参照してください)。 4。 UNION 、 INTERSECT 、および MINUS 演算子を使用する と 、複数の SELECT 文の 出力を 結合して1つの結果セットを形成できます。 UNION オペレータは、結果セットの一方または両方にあるすべての行を返します。 INTERSECT オペレータは、両方の結果セットに厳密にあるすべての行を返します。 MINUS オペレータは、最初の結果セットではなく、第二にある行を返します。 3つのケースでは、重複行が排除されます。以下の場合には UNION 場合、オペレータ、 ALL 指定されている重複が排除されません。 ( 後述の UNION 節、 INTERSECT 節、 MINUS 節を参照)。 5。 実際の出力行は、 SELECT された各行の SELECT 出力式を 使用して計算 されます。 (下記の SELECT リストを 参照してください ) 6。 CONNECT BY 句は、階層関係を持っているデータを選択するために使用されます。このようなデータには行間の親子関係があります。 ( CONNECT 参照) BY 句。) 7。 場合は ORDER BY 句が指定され、返される行は指定された順にソートされています。 ORDER BY が指定されていない 場合 は、システムが最も高速に検索する順序で行が返されます。 ( ORDER 参照 BY 節を参照してください)。 8。 DISTINCT は結果から重複行を除去し DISTINCT 。 ALL (デフォルト)は重複を含むすべての候補行を返します。 (下記の DISTINCT 節を 参照してください 。) 9。 FOR UPDATE 句が原因 SELECT 同時更新に対して選択された行をロックする声明を。 ( FOR 以下の UPDATE 節を参照してください)。 その値を読み取るには、表に対して SELECT 特権 が必要 です。 FOR UPDATE の使用に は、 UPDATE 特権も 必要 です。 optimizer_hint 実行計画の選択のためのオプティマイザへのコメント埋め込みヒント。 オプティマイザのヒントについては、 3.4 項を参照してください 。 FROM 句には、1つ以上のソーステーブルを指定する SELECT 文を。構文は次のとおりです。 FROM source [, ...] どこ source 次の要素のいずれかになります。 table_name [@ dblink ] 既存の表またはビューの名前(スキーマ修飾名も可)。 dblink は、リモートデータベースを識別するデータベースリンク名です。 CREATE 参照してください DATABASE LINK コマンドを使用して、データベース・リンクの情報を取得します。 alias FROM 代替名 FROM foo AS f と指定された場合、 SELECT の残りの部分は この FROM 項目を f foo なくてはなりません 。 select サブ SELECT は FROM 句に使用 できます 。これは、この単一の SELECT コマンドの実行 中の一時テーブルとして出力が作成されたかのように動作します 。サブ SELECT はかっこで囲む必要があり、エイリアスを指定する必要があります。 join_type 次のいずれか: [ INNNER ] JOIN LEFT [ OUTER ] JOIN RIGHT [ OUTER ] JOIN FULL [ OUTER ] JOIN CROSS JOIN ため INNER と OUTER タイプに参加、結合条件のいずれすなわち正確に指定する必要があり NATURAL 、 ON join_condition 、または USING (join_column [, ...] ) 。意味は下記を参照してください。以下のために CROSS JOIN 、これらの句はいずれも表示されないことがあります。 A JOIN 句が2兼ね備え FROM アイテムを。必要に応じて括弧を使用して、ネスティングの順序を決定します。カッコがない場合、 JOIN は左から右にネストします。いずれにし ても、 JOIN は FROM 項目を 区切るカンマよりも緊密に結びついています 。 CROSS JOIN と INNER JOIN は、 FROM のトップレベルにある2つの項目をリストしているのと同じ結果ですが 、結合条件(存在する場合)によって制限される、 単純なデカルト積を生成します 。 CROSS JOIN は INNER JOIN ON (TRUE) と同等 です。つまり、修飾によって行が削除されません。これらの結合タイプは 、 WHERE な FROM および WHERE ではできない何もしないので、表記の便宜のためのものに過ぎません 。 LEFT OUTER JOIN は、条件を満たすデカルト積のすべての行(つまり、結合条件を満たすすべての結合された行)と、結合条件を満たす右辺がない左側の表の各行の1つのコピーを戻します。この左側の行は、右側の列にNULL値を挿入することによって、結合されたテーブルの全幅に拡張されます。 一致する行があるかどうかを判断するときは 、 JOIN 句の条件だけが考慮されます。その後、外的条件が適用されます。 逆に、 RIGHT OUTER JOIN は、 RIGHT OUTER JOIN すべての行と、一致しない右側の行ごとに1つの行を返します(左側にNULLがあります)。 左と右の入力を切り替える ことで LEFT OUTER JOIN 変換できるので、これは表記上の便利なものです 。 FULL OUTER JOIN は、結合されていないすべての行(NULLが右側に拡張されている)ごとに1行加え、一致しない右側の行(NULLが左側に拡張)ごとに1行追加します。 ON join_condition join_condition は、 結合のどの行が一致すると見なされるかを指定 する BOOLEAN 型の値 ( WHERE 句に 似て います)を join_condition 式 です。 USING ( join_column [, ...] ) フォームの句 USING (a, b, ... ) の短縮形である ON left_table.a = right_table.a AND left_table.b = right_table.b ....また、 USING 等価の各対の一方のみを意味します列は結合出力に含まれ、両方には含まれません。 NATURAL NATURAL は 、同じ名前を持つ2つのテーブル内のすべてのカラムを USING リストの 省略形です 。 複数のソースが指定されている場合、結果はすべてのソースのデカルト積(交差結合)になります。通常は、返された行をデカルト積の小さなサブセットに限定するための修飾条件が追加されます。 例 次の例では、 dept テーブル からすべてのエントリを選択し ます。 SELECT * FROM dept; deptno | dname | loc -------+-------------+----------- 10 | ACCOUNTING | NEW YORK 20 | RESEARCH | DALLAS 30 | SALES | CHICAGO 40 | OPERATIONS | BOSTON (4 rows) WHERE condition どこ condition タイプの結果を評価する任意の式です BOOLEAN 。この条件を満たさない行は出力から除外されます。行は、 実際の行の値を任意の変数参照に代入すると、 TRUE 戻すと条件を満たし ます。 例 以下の例は、内容参加 emp および dept 表 の値 WHERE deptno 列 emp テーブルはの値に等しい deptno 列 deptno 表: SELECT d.deptno, d.dname, e.empno, e.ename, e.mgr, e.hiredate FROM emp e, dept d WHERE d.deptno = e.deptno; deptno | dname | empno | ename | mgr | hiredate --------+------------+-------+--------+------+-------------------- 10 | ACCOUNTING | 7934 | MILLER | 7782 | 23-JAN-82 00:00:00 10 | ACCOUNTING | 7782 | CLARK | 7839 | 09-JUN-81 00:00:00 10 | ACCOUNTING | 7839 | KING | | 17-NOV-81 00:00:00 20 | RESEARCH | 7788 | SCOTT | 7566 | 19-APR-87 00:00:00 20 | RESEARCH | 7566 | JONES | 7839 | 02-APR-81 00:00:00 20 | RESEARCH | 7369 | SMITH | 7902 | 17-DEC-80 00:00:00 20 | RESEARCH | 7876 | ADAMS | 7788 | 23-MAY-87 00:00:00 20 | RESEARCH | 7902 | FORD | 7566 | 03-DEC-81 00:00:00 30 | SALES | 7521 | WARD | 7698 | 22-FEB-81 00:00:00 30 | SALES | 7844 | TURNER | 7698 | 08-SEP-81 00:00:00 30 | SALES | 7499 | ALLEN | 7698 | 20-FEB-81 00:00:00 30 | SALES | 7698 | BLAKE | 7839 | 01-MAY-81 00:00:00 30 | SALES | 7654 | MARTIN | 7698 | 28-SEP-81 00:00:00 30 | SALES | 7900 | JAMES | 7698 | 03-DEC-81 00:00:00 (14 rows) GROUP BY { expression | ROLLUP ( expr_list ) | CUBE ( expr_list ) | GROUPING SETS ( expr_list ) } [, ...] GROUP BY は、グループ化された式に対して同じ値を共有する選択された行をすべて単一の行に集約します。 expression は、入力列名、出力列の名前または順序番号( SELECT リスト項目)、または入力列値から形成された任意の式です。あいまいさがある場合、 GROUP BY 名は出力列名ではなく入力列名として解釈されます。 ROLLUP 、 CUBE 、および GROUPING SETS は、 多次元分析をサポートするため の GROUP BY 句の 拡張 です。 これらの拡張機能の使用方法 については、第 2.3.71.3 項を参照してください 。 集計関数が使用されている場合は、各グループを構成するすべての行にわたって計算され、グループごとに別々の値が生成されます( GROUP BY ない 場合、集計は選択したすべての行にわたって計算された単一の値を生成します)。 GROUP BY が存在 する場合 、グループ化されていない列に対して複数の可能な値が返される ため、 SELECT リスト式が集合関数内以外のグループ化されていない列を参照する ことは無効です 。 例 次の例 では、 emp テーブルの sal カラムの 合計を計算し 、結果を部門番号でグループ化しています。 SELECT deptno, SUM(sal) AS total FROM emp GROUP BY deptno; deptno | total --------+---------- 10 | 8750.00 20 | 10875.00 30 | 9400.00 (3 rows) オプションの HAVING 句の形式は次のとおりです。 HAVING condition どこ condition WHERE 句に指定したものと同じです。 HAVING は、指定された条件を満たさないグループ行を削除します。 HAVING は WHERE とは異なり ます。 WHERE の適用前に個々の行をフィルタリング GROUP BY ながら、 HAVING によって作成されたフィルタグループ行 GROUP BY 。条件内で参照される各列は、集計関数内に参照が表示されない限り、グループ化列を明白に参照する必要があります。 例 列を合計するに は、全従業員を sal 、部門番号で結果をグループ化し、10000未満のグループ合計を表示します。 SELECT deptno, SUM(sal) AS total FROM emp GROUP BY deptno HAVING SUM(sal) < 10000; deptno | total --------+--------- 10 | 8750.00 30 | 9400.00 (2 rows) SELECT リストは、(キーワードの間 SELECT と FROM )の出力行を形成表現を指定する SELECT 文を。式は、 FROM 句で 計算された列を参照できます(通常は行います) 。 AS 節の使用 output_name では、出力列に別の名前を指定できます。この名前は、主に表示する列にラベルを付けるために使用されます。また、 ORDER BY GROUP BY 句 と GROUP BY 句 の列の値を参照するのにも使用できますが 、 WHERE 句 や HAVING 句 では WHERE できません 。代わりに式を書き出す必要があります。 式の代わりに、 * は選択された行のすべての列の省略形として出力リストに書き込むことができます。 例 次の例 の SELECT リストでは、結果セットに empno 列、 ename 列、 mgr 列、および hiredate 列 を含めるように指定してい ます。 SELECT empno, ename, mgr, hiredate FROM emp; empno | ename | mgr | hiredate -------+--------+------+-------------------- 7934 | MILLER | 7782 | 23-JAN-82 00:00:00 7782 | CLARK | 7839 | 09-JUN-81 00:00:00 7839 | KING | | 17-NOV-81 00:00:00 7788 | SCOTT | 7566 | 19-APR-87 00:00:00 7566 | JONES | 7839 | 02-APR-81 00:00:00 7369 | SMITH | 7902 | 17-DEC-80 00:00:00 7876 | ADAMS | 7788 | 23-MAY-87 00:00:00 7902 | FORD | 7566 | 03-DEC-81 00:00:00 7521 | WARD | 7698 | 22-FEB-81 00:00:00 7844 | TURNER | 7698 | 08-SEP-81 00:00:00 7499 | ALLEN | 7698 | 20-FEB-81 00:00:00 7698 | BLAKE | 7839 | 01-MAY-81 00:00:00 7654 | MARTIN | 7698 | 28-SEP-81 00:00:00 7900 | JAMES | 7698 | 03-DEC-81 00:00:00 (14 rows) UNION 句の形式は次のとおりです。 select_statement UNION [ ALL ] select_statement select_statement は 、 ORDER BY 節 または FOR UPDATE 節の ない SELECT 文 です。 ( ORDER BY は、カッコで囲まれている場合はサブ式に付けることができますが、括弧なしの場合は 、右側の入力式ではなく UNION の結果に適用されます )。 UNION SELECT 文によって返される行の集合を計算します。結果セットの少なくとも1つに出現する場合、行は2つの結果セットの組の集合に含まれます。 UNION 直接オペランドを表す 2つの SELECT ステートメントは 、同じ数の列を生成する必要があり、対応する列は互換性のあるデータ型でなければなりません。 ALL オプションが指定されてい ない限り、 UNION の結果に 重複行は含まれません 。 ALL は重複の除去を防ぎます。 同じ SELECT ステートメント 内の 複数の UNION 演算子は、 括弧で囲まれていない限り、左から右に評価されます。 現在、 FOR UPDATE ためのいずれかに指定することはできません UNION 結果や、任意の入力のための UNION 。 INTERSECT 句の形式は次のとおりです。 select_statement INTERSECT select_statement select_statement は 、 ORDER BY 節 または FOR UPDATE 節の ない SELECT 文 です。 INTERSECT オペレータが関与によって返される行の積集合を計算 SELECT 文を。両方の結果セットに表示される行は、2つの結果セットの共通部分にあります。 INTERSECT の結果に 重複行は含まれません。 同じ SELECT ステートメント 内の 複数の INTERSECT 演算子は、 かっこが別の方法で指示しない限り、左から右に評価されます。 INTERSECT は UNION よりも緊密にバインドされます 。つまり、 A UNION B INTERSECT C は A UNION (B INTERSECT C) として読み込まれ ます。 MINUS 句は、この一般的な形式があります: select_statement MINUS select_statement select_statement は 、 ORDER BY 節 または FOR UPDATE 節の ない SELECT 文 です。 MINUS 演算子は、左の結果である行の集合を計算 SELECT 文ではなく、右のいずれかの結果では。 MINUS の結果に 重複行は含まれません。 同じ SELECT ステートメント 内の 複数の MINUS 演算子は、 かっこで指示されていない限り、左から右に評価されます。 MINUS は UNION と同じレベルでバインドされ ます。 CONNECT BY 階層的なクエリを実行するとき句は、行の親子関係を決定します。それは一般的な形式を持っています: CONNECT BY { PRIOR parent_expr = child_expr | child_expr = PRIOR parent_expr } parent_expr は、候補の親行で評価されます。場合 parent_expr = child_expr 、その結果 TRUE によって返された行の FROM 句は、この行は親の子と考えられています。 次のオプション節は、 CONNECT BY 句 と組み合わせて指定できます 。 START WITH start_expression start_expression が TRUE と 評価される FROM 句 によって返された行 は、階層のルートノードになります。 expression ORDER SIBLINGS BY [ ASC | DESC ] [, ...] 階層の兄弟行は、 結果セット内の expression によって順序付けられ ます。 注意 :Advanced Serverは 、 CONNECT BY 句 での AND (または他の演算子)の 使用をサポートしていません 。 ORDER BY expression [ ASC | DESC ] [, ...] expression は、出力列( SELECT リスト項目) の名前または順序番号でも、 入力列値から形成された任意の式でもかまいません。 ORDER BY 句は、結果の行が指定された式に従ってソートされます。最も左の式に従って2つの行が等しい場合は、次の式などで比較されます。それらが指定されたすべての式に従って等しい場合、それらは実装依存の順序で返されます。 序数は、結果列の序数(左から右へ)を参照します。この機能により、一意の名前を持たない列に基づいて順序を定義することができます。 AS 句 を使用して結果列に名前を割り当てることは常に可能であるため、絶対に必要なことではありません 。 ORDER BY 句で 任意の式を使用することもできます。これには 、 SELECT 結果リストに含ま れない列も含まれます 。したがって、次の文が有効です。 SELECT ename FROM emp ORDER BY empno; この機能の制限は 、 UNION 、 INTERSECT 、または MINUS 句 の結果に適用さ れる ORDER BY 句が 、式ではなく出力列名または数値のみを指定できることです。 場合は ORDER BY 式が結果列名と入力列名の両方に一致する単純な名前で、 ORDER BY 結果列名として解釈されます。これは、 GROUP BY が同じ状況で行う 選択の反対です 。この矛盾はSQL標準と互換性があるように作られています 。 オプション で、 ORDER BY 句 に任意の式の後に キーワード ASC (昇順)または DESC (降順)を 追加できます 。指定されていない場合、 ASC はデフォルトで使用されます。 null値は、他の値よりも高いソート値を持ちます。つまり、昇順の並べ替え順序では、null
値は最後にソートされ、ソート順が降順になると、null値は先頭にソートされます。 文字列データは、データベースクラスタの初期化時に設定されたロケール固有の照合順序に従ってソートされます。 例 次の2つの例は、2番目の列( dname )の 内容に従って個々の結果をソートするのと同じ方法です 。 SELECT * FROM dept ORDER BY dname; deptno | dname | loc --------+------------+---------- 10 | ACCOUNTING | NEW YORK 40 | OPERATIONS | BOSTON 20 | RESEARCH | DALLAS 30 | SALES | CHICAGO (4 rows) SELECT * FROM dept ORDER BY 2; deptno | dname | loc --------+------------+---------- 10 | ACCOUNTING | NEW YORK 40 | OPERATIONS | BOSTON 20 | RESEARCH | DALLAS 30 | SALES | CHICAGO (4 rows) SELECT ステートメントで DISTINCT 指定されている 場合は、 重複した行がすべて結果セットから DISTINCT され DISTINCT (重複する各グループから1つの行が保持されます)。 ALL キーワードは反対を指定:すべての行が保持されます。これがデフォルトです。 FOR UPDATE [WAIT n |NOWAIT|SKIP LOCKED] FOR UPDATE は、 SELECT ステートメント によって取得された行を 、更新のようにロックします。これにより、現在のトランザクションが終了するまで他のトランザクションによって行が変更または削除されることがなくなります。 選択した行 を UPDATE 、 DELETE 、または SELECT FOR UPDATE しようとする トランザクションは、現在のトランザクションが終了するまでブロックされます。もし UPDATE 、 DELETE 、または SELECT FOR UPDATE 他のトランザクションから、既に選択された行または行をロックしている、 SELECT FOR UPDATE 場合、完了するために、最初のトランザクションを待ちます、その後、更新された行(または全く行をロックして返します。行が削除されました)。 FOR UPDATE は、戻された行を個々の表の行で明確に識別できない場合(たとえば、集計の場合)には使用できません。 FOR 使用 ロック設定を指定する UPDATE オプション: ・ WAIT 含める n キーワードを使用して、 SELECT 文が別のセッションによってロックされた行を待機する 秒数(または分数秒)を指定します 。 10進形式を使用して分数秒を指定します。たとえば、 WAIT 1.5 はサーバーに WAIT 1.5 秒間待機するよう指示します。小数点以下4桁までを指定します。 ・ 現在のセッションで行をロックできない場合は、すぐにエラーを報告する ために NOWAIT キーワードを 含めます 。 ・ SKIP 含める 可能であれば行をロックするようにサーバーに指示するには LOCKED を指定し、別のセッションによってすでにロックされている行はスキップします。 名 SET CONSTRAINTS - 現在のトランザクションの制約チェックモードを設定する シノプシス SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE } 説明 SET CONSTRAINTS は、現在のトランザクション内の制約チェックの動作を設定します。 IMMEDIATE 制約は、各ステートメントの最後にチェックされます。 DEFERRED 制約は、トランザクションがコミットされるまでチェックされません。各制約には、独自の IMMEDIATE または DEFERRED モードがあります。 作成時に、制約が3つの特性が与えられます。 DEFERRABLE INITIALLY DEFERRED 、 DEFERRABLE INITIALLY IMMEDIATE 、または NOT DEFERRABLE 。 3番目のクラスは常に IMMEDIATE あり、 SET CONSTRAINTS コマンドの 影響を受けません 。最初の2つのクラスは、指定されたモードですべてのトランザクションを開始しますが、その動作は SET CONSTRAINTS によってトランザクション内で変更できます 。 制約名のリストを持つ SET CONSTRAINTS は、それらの制約のモードを変更します(すべてが遅延可能でなければなりません)。指定された名前に一致する制約が複数ある場合は、すべてが影響を受けます。 SET CONSTRAINTS ALL は、すべての遅延可能制約のモードを変更します。 ときに SET CONSTRAINTS からの制約のモードを変更 DEFERRED に IMMEDIATE 、新しいモードが遡及的に有効になります。トランザクションの終了時にチェックされていた未処理のデータ変更が代わりに実行時にチェックされ SET CONSTRAINTS コマンド。そのような制約に違反すると、 SET CONSTRAINTS 失敗します(制約モードは変更されません)。したがって、 SET CONSTRAINTS を使用して、トランザクション内の特定のポイントで制約のチェックを強制的に実行できます。 現時点では、外部キー制約のみがこの設定の影響を受けます。チェックとユニーク制約は、常に効果的に遅延されません。 ノート このコマンドは、現在のトランザクション内の制約の動作のみを変更します。したがって、このコマンドをトランザクションブロックの外で実行すると、効果がないように見えます。 名 SET ROLE - 現在のセッションの現在のユーザーIDを設定する シノプシス このコマンドは、現在のSQLセッション・コンテキストの現在のユーザー識別子を rolename ます。 SET ROLE 後 、 SQLコマンドの権限チェックは、指定されたロールが本来ログインしていたものであるかのように実行されます。 指定された rolename 、現在のセッションのユーザーがメンバーである役割である必要があります。 (セッションユーザがスーパーユーザの場合、任意のロールを選択できます)。 NONE は、現在のユーザーIDを現在のセッションユーザーIDにリセットします。これらのフォームは、任意のユーザーが実行できます。 ノート このコマンドを使用すると、特権を追加したり、特権を制限することができます。セッションユーザーロールに INHERITS 属性が設定されている場合は、 SET ROLE に設定 できるすべてのロールのすべての権限が自動的に付与さ れます。この場合、 SET ROLE は、セッション・ユーザーに直接割り当てられているすべての権限とそのメンバーである他の役割を効果的に削除し、名前付きロールに使用可能な権限のみを残します。一方、セッションユーザーロールに NOINHERITS 属性 が設定されている NOINHERITS 、 SET ROLE はセッションユーザーに直接割り当てられた権限を削除し、代わりに名前付きロールで使用できる権限を取得します。特に、スーパーユーザーが スーパーユーザー以外の役割 に SET ROLE を 選択すると 、スーパーユーザーの権限が失われます。 ユーザー mary は、役割 admins のIDを admins ます。 SET ROLE admins; SET ROLE NONE; 名 SET TRANSACTION - 現在のトランザクションの特性を設定する シノプシス SET TRANSACTION transaction_mode ここで、 transaction_mode は次のいずれかです。 ISOLATION LEVEL { SERIALIZABLE | READ COMMITTED } READ WRITE | READ ONLY 説明 SET TRANSACTION コマンドは現在のトランザクションの特性を設定します。その後の取引には何の影響もありません。 使用可能なトランザクション特性は、トランザクション分離レベルとトランザクション・アクセス・モード(読み取り/書き込みまたは読み取り専用)です。トランザクションの分離レベルは、他のトランザクションが同時に実行されているときにトランザクションがどのデータを参照できるかを決定します。 READ COMMITTED 文は開始前にコミットされた行のみを表示できます。これがデフォルトです。 SERIALIZABLE 現在のトランザクションのすべてのステートメントは、このトランザクションで最初のクエリまたはデータ変更ステートメントが実行される前にコミットされた行のみを表示できます。 最初のクエリまたはデータ変更後にトランザクション分離レベルを変更することはできません
トランザクションのステートメント( SELECT 、 INSERT 、 DELETE 、 UPDATE 、または FETCH )が実行されました。トランザクションアクセスモードは、トランザクションが読み取り/書き込みか読み取り専用かを決定します。読み取り/書き込みはデフォルトです。 トランザクションが読取り専用の場合、次のSQLコマンドは使用できません。 書込み対象の表が一時表でない場合は 、 INSERT 、 UPDATE 、および DELETE です。すべての CREATE 、 ALTER 、および DROP コマンド。 COMMENT 、 GRANT 、 REVOKE 、 TRUNCATE 。そして EXECUTE それが実行するコマンドが記載されているものの中にある場合。これは、ディスクへのすべての書き込みを妨げるわけではない読み取り専用の高水準の概念です。 TRUNCATE - テーブルを空にする TRUNCATE TABLE name [DROP STORAGE] TRUNCATE は、表からすべての行をすばやく削除します。それは非修飾 DELETE と同じ効果を持ち ますが、実際にはテーブルをスキャンしないのでより高速です。これは大きなテーブルで最も便利です。 DROP STORAGE 句は互換性のために受け入れられますが、無視されます。 name 切り捨てられる表の名前(スキーマ修飾名も可)。 他のテーブルからのテーブルへの外部キー参照がある場合、 TRUNCATE は使用できません。このような場合に有効性を確認するには、テーブルスキャンが必要であり、そのポイント全体が1つのスキャンではありません。 TRUNCATE は 、テーブルに存在する可能性のある ユーザ定義の ON DELETE トリガを実行しません。 テーブル bigtable : TRUNCATE TABLE bigtable; UPDATE - テーブルの行を更新する UPDATE [ optimizer_hint ] table [@ dblink ] SET column = { expression | DEFAULT } [, ...] [ WHERE condition ] [ RETURNING return_expression [, ...] { INTO { record | variable [, ...] } | BULK COLLECT INTO collection [, ...] } ] UPDATE は、条件を満たすすべての行の指定された列の値を変更します。 SET 句 では、変更する列のみを記述する必要があります 。明示的に変更されていない列は以前の値を保持します。 RETURNING INTO { record | variable [, ...] } 句は、 SPLプログラム内でのみ指定できます。さらに、 UPDATE コマンドの 結果セットは 複数の行を戻してはいけません。それ以外の場合は例外がスローされます。結果セットが空の場合、ターゲットレコードの内容はNULLに設定されます。 RETURNING BULK COLLECT INTO collection [, ...] 場合句にのみ指定することができる UPDATE コマンドはSPLプログラム内で使用されています。複数の collection が BULK COLLECT INTO 句の ターゲットとして指定されている 場合、各 collection は単一のスカラーフィールドで構成されている必要があります 。 つまり、 collection はレコードであってはなりません。 UPDATE コマンド の結果セットには 、1つ以上の行が含まれていてもかまいません。 結果セットの各行に対して評価される return_expression は、最初の要素から始まる collection 要素になり ます。 collection 内の既存の行はすべて 削除されます。結果セットが空の場合、 collection は空に なります。 あなたは持っている必要があります UPDATE それを更新し、同様にして、テーブルの上に権限を SELECT 値に読まれているすべてのテーブルに権限 expression または condition 。 optimizer_hint 実行計画の選択のためのオプティマイザへのコメント埋め込みヒント。 table 更新する表の名前(スキーマ修飾名も可)。 dblink リモートデータベースを識別するデータベースリンク名。 CREATE 参照してください DATABASE LINK コマンドを使用して、データベース・リンクの情報を取得します。 column 表内の列の名前。 expression 列に割り当てる式。式は、テーブル内のこの列と他の列の古い値を使用することがあります。 DEFAULT 列をデフォルト値に設定します(特定のデフォルト式が割り当てられていない場合はnullになります)。 condition BOOLEAN 型の値を返す式 。この式がtrueを返す行のみが更新されます。 return_expression 表の1つ以上の列を含む式。 return_expression tableの列名が指定され ている場合、 return_expression が評価された ときの列の値 は次のように決定されます。 return_expression で 指定された列に UPDATE コマンドで値が割り当てられている場合、割り当てられた値が return_expression の評価に使用され ます。 return_expression で 指定された列に UPDATE コマンドで 値が割り当てられていない 場合、影響を受ける行の現在の値が return_expression の評価に使用され ます。 record 評価された return_expression が割り当てられる フィールドのレコード 。最初の return_expression は record の最初のフィールドに 割り当てられ 、2番目の return_expression は record の2番目のフィールドに割り当てられ ます。 record のフィールド 数は式の数と完全に一致しなければならず、フィールドは割り当てられた表現。 variable 評価された return_expression が割り当てられる 変数 。複数の return_expression と variable が指定されている場合、最初の return_expression が最初の variable に 割り当てられ 、2番目の return_expression が2番目の variable 割り当てられ ます INTO キーワードの 後に指定される変数 の数は、 RETURNING キーワードと変数は、割り当てられた式と型互換性がなければなりません。 collection 評価された return_expression から要素が作成されるコレクション 。単一フィールドのコレクションまたはレコードタイプのコレクションである単一のコレクション、または複数のコレクションが存在する場合があります。その場合、各コレクションは単一のフィールドで構成されなければなりません。戻り式の数は、指定されたすべてのコレクションのフィールド数と順番に一致する必要があります。それぞれの対応する return_expression および collection フィールドは型互換性がなければなりません。 場所を変更し AUSTIN 部門の 20 中 dept テーブル: UPDATE dept SET loc = 'AUSTIN' WHERE deptno = 20; emp テーブルに job = SALESMAN を 持つすべての従業員について 、給与を10%更新し、手数料を500増加させます。 UPDATE emp SET sal = sal * 1.1, comm = comm + 500 WHERE job = 'SALESMAN'; Advanced Serverに は、組み込みデータ型のための多数の関数と演算子が用意されています。 通常の論理演算子を使用できます。 AND 、 OR 、 NOT SQL は、ヌル値が 「不明」を 表す3値ブール論理を使用し ます 。以下の真理値表を観察してください。 表 2 - 11 AND / OR真理値表 a b a AND b a OR b 真 真 真 真 真 偽 偽 真 真 ヌル ヌル 真 偽 偽 偽 偽 偽 ヌル 偽 ヌル ヌル ヌル ヌル ヌル 表 2 - 真実でない表 12 a NOT a 真 偽 偽 真 ヌル ヌル 演算子 AND および OR は可換性です。つまり、結果に影響を与えずに左右のオペランドを切り替えることができます。 次の表に、通常の比較演算子を示します。 表 2 - 13 比較演算子 Operator Description < 未満 > グレーター
より <= 以下 >= 以上 = 等しい <> 等しくない != 等しくない 比較演算子は、これが意味を成すすべてのデータ型で使用できます。すべての比較演算子は BOOLEAN 型の値を返すバイナリ演算子 です。 1 < 2 < 3 ような式 は有効ではありません( ブール値と 3 を比較する < 演算子 がないため )。 比較演算子に加えて、特別な BETWEEN 構成が利用可能です。 a BETWEEN x AND y は a >= x AND a <= y 同様に、 a NOT BETWEEN x AND y は a < x OR a > y 第1のものを第2のものに内部的に書き換えるために必要な CPU サイクル を除いて、2つのそれぞれの形式の間に違いはない 。 値がnullかどうかをチェックするには、構造体を使用します expression IS NULL expression IS NOT NULL NULL が "等しい"で ない ため、 expression = NULL 書き込まないでください 。 NULL 。 (null値は未知の値を表し、2つの未知の値が等しいかどうかは分かりません)。この動作はSQL標準に準拠しています 。 いくつかのアプリケーションでは、 expression = NULL は、 expression がnull値に評価される 場合はtrueを返すと 予想 されることがあります。これらのアプリケーションをSQL標準に準拠するように変更することを強くお勧めします 。 数学演算子は、多くの Advanced Server タイプで 提供されてい ます 。すべての可能な順列(例えば、日付/時刻型)のための一般的な数学的な慣習のない型については、実際の動作は後続の節で説明される。 次の表に、使用可能な数学演算子を示します。 表 2 - 14 数学演算子 Operator Description Example Result + 添加 2 + 3 5 - 減算 2 – 3 -1 * 乗算 2 * 3 6 / 部門(次の注を参照してください)。 4 / 2 2 ** 指数演算子 2 ** 3 8 注: 場合 db_dialect 内の構成パラメータ postgresql.conf ファイルに設定されている redwood 、その後の一対の分割 INTEGER データ型は、切り捨てられた値をもたらしません。以下の例に示すように、分数結果は保持されます。 edb=# SET db_dialect TO redwood; SET edb=# SHOW db_dialect; db_dialect ------------ redwood (1 row) edb=# SELECT CAST('10' AS INTEGER) / CAST('3' AS INTEGER) FROM dual; ?column? -------------------- 3.3333333333333333 (1 row) この動作は、ネイティブの INTEGER データ型 が存在しないOracleデータベースと互換性が あり、 INTEGER データ型の仕様は内部的に NUMBER(38) 変換され ます。この結果、分数結果が保持されます。 場合 db_dialect 構成パラメータは次のように設定されている postgres の一対の分割次に、 INTEGER 以下の例で示すように切り捨てられた値のデータ型の結果: edb=# SET db_dialect TO postgres; SET edb=# SHOW db_dialect; db_dialect ------------ postgres (1 row) edb=# SELECT CAST('10' AS INTEGER) / CAST('3' AS INTEGER) FROM dual; ?column? ---------- 3 INTEGER 、 SMALLINT 、または BIGINT いずれかの データ型を 含む分割が 結果の切り捨てになります。 前述の例のよう に db_dialect が postgres 設定されている 場合、Advanced Serverは同じ切り捨て結果を返します 。 その場合でも、但し db_dialect に設定されている redwood の一対と、のみ分裂を INTEGER 結果ないトランケーションにおけるデータ型をもたらします。 INTEGER データ型の 有無にかかわらず、 SMALLINT または BIGINT データ型 のみを含む除算では 、 INTEGER および SMALLINT が除算に関与 する次のような小数部を保持せずに、PostgreSQL形式で切り捨てられます 。 edb=# SHOW db_dialect; db_dialect ------------ redwood (1 row) edb=# SELECT CAST('10' AS INTEGER) / CAST('3' AS SMALLINT) FROM dual; ?column? ---------- 3 (1 row) 次の表に、使用可能な数学関数を示します。これらの関数の多くは、引数型が異なる複数の形式で提供されています。特に明記されていない限り、関数の任意の形式は引数と同じデータ型を返します。 DOUBLE PRECISION データで 機能する関数 は、主にホストシステムのCライブラリの上に実装されています。境界ケースの精度と挙動はホストシステムによって異なる場合があります。 表 2 - 15 数学関数 Function Return Type Description Example Result ABS( x ) xと 同じ 絶対値 ABS(-17.4) 17.4 CEIL(DOUBLE PRECISION or NUMBER) 入力と同じ 引数より小さくない最小の整数 CEIL(-42.8) -42 EXP(DOUBLE PRECISION or NUMBER) 入力と同じ 指数関数的 EXP(1.0) 2.7182818284590452 FLOOR(DOUBLE PRECISION or NUMBER) 入力と同じ 引数より大きくない最大の整数 FLOOR(-42.8) 43 LN(DOUBLE
PRECISIONまたはNUMBER) 入力と同じ 自然対数 LN(2.0) 0.6931471805599453 LOG( b NUMBER, x NUMBER) NUMBER 基底 b への対数 LOG(2.0, 64.0) 6.0000000000000000 MOD( y , x ) 引数の型と同じ 残りの y / x MOD(9, 4) 1 NVL( x , y ) 引数型と同じ。両方の引数が同じデータ型の場合 xが NULLの 場合 、NVLは 、Yを 返します NVL(9, 0) 9 POWER( DOUBLE PRECISION, B DOUBLE PRECISION) DOUBLE PRECISION a の力を bに 上げる POWER(9.0, 3.0) 729.0000000000000000 POWER( NUMBER, Bの NUMBER) NUMBER a の力を bに 上げる POWER(9.0, 3.0) 729.0000000000000000 ROUND(DOUBLE PRECISION or NUMBER) 入力と同じ 最も近い整数への丸め ROUND(42.4) 42 ROUND( v NUMBER, s INTEGER) NUMBER Sの 小数点以下の桁数 に丸め ROUND(42.4382, 2) 42.44 SIGN(DOUBLE PRECISION or NUMBER) と同じ
入力 引数の符号(-1、0、+1) SIGN(-8.4) -1 SQRT(DOUBLE PRECISION or NUMBER) 入力と同じ 平方根 SQRT(2.0) 1.414213562373095 TRUNC(DOUBLE PRECISION or NUMBER) 入力と同じ ゼロに切り捨てる TRUNC(42.8) 42 TRUNC( v NUMBER, s INTEGER) NUMBER 小数点以下を切り捨てる TRUNC(42.4382, 2) 42.43 WIDTH_BUCKET( 演算 NUMBER, b1 NUMBER, b2 NUMBER, count INTEGER) INTEGER B2 に 範囲 B1 に 、OPは カウント バケット とequidepthヒストグラムに割り当てられる ためにバケツを返します WIDTH_BUCKET(5.35, 0.024, 10.06, 5) 3 次の表に、利用可能な三角関数を示します。すべての三角関数は引数をとり、 DOUBLE PRECISION 型の値を返します 。 表 2 - 16 三角関数 Function Description ACOS( x ) 逆コサイン ASIN( x ) 逆サイン ATAN( x ) 逆タンジェント ATAN2( x , y ) x / yの 逆正接 COS( x ) 余弦 SIN( x ) 正弦 TAN( x ) 正接 この節では、文字列値を調べて操作するための関数と演算子について説明します。この文脈の文字列には、タイプ CHAR 、 VARCHAR2 、および CLOB 値が含まれます 。特に指定のないかぎり、以下に挙げる関数はすべてこれらのすべての型で機能しますが、 CHAR 型 を使用する場合、自動パディングの潜在的な影響に注意して ください。一般に、ここで説明する関数は、非文字列型のデータでもそのデータを文字列表現に変換することで動作します。 表 2 - 17 SQL文字列関数と演算子 Function Return Type Description Example Result 文字列 || 文字列 CLOB 文字列連結 'Enterprise' || 'DB' EnterpriseDB CONCAT( 文字列 , 文字列 ) CLOB 文字列連結 'a' || 'b' ab HEXTORAW( varchar2 ) RAW VARCHAR2 値を RAW 値に 変換し ます。 HEXTORAW('303132') '012' RAWTOHEX( raw ) VARCHAR2 RAW 値を HEXADECIMAL 値に 変換し ます。 RAWTOHEX('012') '303132' INSTR( 文字列 , 集合 , [ 開始 [, 発生 ] ]) INTEGER 文字列、 文字列 内の 位置startで開始 し、セットの第一、第二、第三などの発生を探して 、文字列内の文字の組の位置を見出します 。セットが見つからない場合は0を返します。 INSTR('PETER PIPER PICKED a PECK of PICKLED PEPPERS','PI',1,3) 30 INSTRB( string , set ) INTEGER string 内の set の位置を返します 。 set が見つからない 場合 は 0 返します 。 INSTRB('PETER PIPER PICKED a PECK of PICKLED PEPPERS', 'PICK') 13 INSTRB( string , set , start ) INTEGER start で start string 内 の set の位置を返します 。 set が見つからない 場合 は 0 返します 。 INSTRB('PETER PIPER PICKED a PECK of PICKLED PEPPERS','PICK', 14) 30 INSTRB( string , set , start , occurrence ) INTEGER 指定 の 出現位置を返します set 内 string で始まる、 start 。 set が見つからない 場合 は 0 返します 。 INSTRB('PETER PIPER PICKED a PECK of PICKLED PEPPERS','PICK', 1, 2) 30 LOWER( 文字列 ) CLOB 文字列 を小文字に 変換 する LOWER('TOM') tom SUBSTR( 文字列 , 開始 [, カウント ]) CLOB カウント 文字の 開始 と 終了 から部分文字列を抽出 し ます 。 count を指定しない 場合 、文字列は開始から終了まで切り捨てられます。 SUBSTR('This is a test',6,2) is SUBSTRB( 文字列 , 開始 [, カウント ]) CLOB start と count がバイト数である 点を除いて 、 SUBSTR 同じ SUBSTR 。 SUBSTRB('abc',3) (2バイト文字セットを想定) c SUBSTR2( 文字列 , 開始 [, カウント ]) CLOB SUBSTR エイリアス 。 SUBSTR2('This is a test',6,2) is SUBSTR2( 文字列 , 開始 [, カウント ]) CLOB SUBSTRB 別名 。 SUBSTR2('abc',3) (2バイト文字セットを想定) c SUBSTR4( 文字列 , 開始 [, カウント ]) CLOB SUBSTR エイリアス 。 SUBSTR4('This is a test',6,2) is SUBSTR4( 文字列 , 開始 [, カウント ]) CLOB SUBSTRB 別名 。 SUBSTR4('abc',3) (2バイト文字セットを想定) c SUBSTRC( 文字列 , 開始 [, カウント ]) CLOB SUBSTR エイリアス 。 SUBSTRC('This is a test',6,2) is SUBSTRC( 文字列 , 開始 [, カウント ]) CLOB SUBSTRB 別名 。 SUBSTRC('abc',3) (2バイト文字セットを想定) c TRIM([ LEADING | TRAILING | BOTH ] [ 文字 ] FROM 文字列 ) CLOB 文字列の開始/終了/両端から文字のみを含む最も長い文字列(デフォルトではスペース)を削除します。 TRIM(BOTH 'x' FROM 'xTomxx') Tom LTRIM( 文字列 [, セット ]) CLOB 指定 さ れた 文字列の 左側から setで 指定されたすべての文字を削除します 。 set を指定しない 場合 、デフォルトとして空白が使用されます。 LTRIM('abcdefghi', 'abc') defghi RTRIM( 文字列 [, セット ]) CLOB 指定 さ れた 文字列の 右側から setで 指定されたすべての文字を削除します 。 set を指定しない 場合 、デフォルトとして空白が使用されます。 RTRIM('abcdefghi', 'ghi') abcdef UPPER( 文字列 ) CLOB 文字列 を大文字に 変換 する UPPER('tom') TOM 追加の文字列操作関数が利用可能であり、次の表にリストされています。 表2-17 に 示す SQL 標準文字列関数 を実装するために内部的に使用されるものもあります 。 表 2 - 18 その他の文字列関数 Function Return Type Description Example Result ASCII( 文字列 ) INTEGER 引数の最初のバイトのASCIIコード ASCII('x') 120 CHR(INTEGER) CLOB 与えられたASCIIコードの文字 CHR(65) A DECODE( expr , expr1a , expr1b [, expr2a , expr2b ]... [, デフォルト ]) expr1b 、 expr2b 、...、 defaultの 引数型と同じ です。 一致が見つかりました場合、対応するパラメータ対、expr1b、expr2b、 等一致が見つからない場合、 デフォルト値を 返すを 返す等 expr1a、expr2a と expr の最初の一致を見つけます 。一致するものが見つから ず 、 デフォルト が指定されていない場合はnullを返します。 DECODE(3, 1,'One', 2,'Two', 3,'Three', 'Not found') Three INITCAP( 文字列 ) CLOB 各単語の最初の文字を大文字に変換し、残りは小文字に変換します。言葉は英数字以外の文字で区切られた一連の英数字です。 INITCAP('hi THOMAS') Hi Thomas LENGTH INTEGER 文字列値の文字数を返します。 LENGTH('Côte d''Azur') 11 LENGTHC INTEGER この機能は機能的に LENGTH と同じです 。互換性のために関数名がサポートされています。 LENGTHC('Côte d''Azur') 11 LENGTH2 INTEGER この機能は機能的に LENGTH と同じです 。互換性のために関数名がサポートされています。 LENGTH2('Côte d''Azur') 11 LENGTH4 INTEGER この機能は機能的に LENGTH と同じです 。互換性のために関数名がサポートされています。 LENGTH4('Côte d''Azur') 11 LENGTHB INTEGER 指定された値を保持するために必要なバイト数を返します。 LENGTHB('Côte d''Azur') 12 LPAD( 文字列 , 長さ INTEGER [, fill ]) CLOB 文字を付加することで 大きさ、 長さ の 文字列を 埋める 、(デフォルトはスペース)を 埋めます 。 文字列が すでに長い 長さ を超える場合 、それは(右に)切り捨てられます。 LPAD('hi', 5, 'xy') xyxhi REPLACE( string , search_string [, replace_string ] CLOB 文字列中のある値を別の値に置き換えます。 replace_stringの 値を指定しなかった 場合、見つかった場合 、 search_stringの 値は削除されます。 REPLACE( 'GEORGE', 'GE', 'EG') EGOREG RPAD( 文字列 , 長さ INTEGER [, fill ]) CLOB 文字列 を 追加 して 文字列 をsize、 length に 塗りつぶし 、 fill (デフォルトではスペース)。 文字列の 長さ よりもすでに長い場合 、それは切り捨てられます。 RPAD('hi', 5, 'xy') hixyx TRANSLATE( 文字列 , from , to ) CLOB from 集合の 文字 と一致する文字 列 内の 文字 は、 to 集合 内の対応する文字に置き換えられ ます。 TRANSLATE('12345', '14', 'ax') a23x5 Advanced Serverは、 REGEXP _ COUNT 、 REGEXP_INSTR および REGEXP_SUBSTR 関数を サポートしてい REGEXP 。これらの関数は、文字列内で正規表現で指定されたパターンを検索し、その文字列内のパターンの出現に関する情報を返します。パターンはPOSIXスタイルの正規表現でなければなりません。 POSIXスタイルの正規表現を構成する 詳細について は、コアのドキュメントを参照してください。 https://www.postgresql.org/docs/10/static/functions-matching.html REGEXP _ COUNT は文字列で正規表現を検索し、正規表現が出現する回数を返します。署名は次のとおりです。 INTEGER REGEXP_COUNT パラメーター srcstr srcstr は、検索する文字列を指定します。 pattern pattern 正規表現を指定する REGEXP _ COUNT 検索されますが。 position position これにソース文字列内の位置を示す整数値である REGEXP _ COUNT 検索を開始しますします。デフォルト値は 1 です。 modifier modifier NULL です。 Advanced Serverで サポートされる修飾子の完全なリスト については、次のURLにあるPostgreSQLのコアドキュメントを参照してください。 https://www.postgresql.org/docs/10/static/functions-matching.html 次の簡単な例では、 REGEXP_COUNT は 、文字列 'reinitializing' 文字 i が使用され た回数のカウントを返します 。 edb=# SELECT REGEXP_COUNT('reinitializing', 'i', 1) FROM DUAL; regexp_count -------------- 5 (1 row) 最初の例では、コマンドは REGEXP _ COUNT が最初の位置でカウントを開始する ように指示し REGEXP 。 6番目の位置でカウントを開始するコマンドを変更した場合: edb=# SELECT REGEXP_COUNT('reinitializing', 'i', 6) FROM DUAL; regexp_count -------------- 3 (1 row) REGEXP _ COUNT は 3 返します 。 6番目の位置の前に 出現する文字 i 出現は除外されます 。 REGEXP _ INSTR は、POSIXスタイルの正規表現を文字列で検索します。この関数は、マッチした文字列内の位置を返します。署名は次のとおりです。 INTEGER REGEXP_INSTR パラメーター: srcstr srcstr は、検索する文字列を指定します。 pattern pattern は、 REGEXP _ INSTR が検索 する正規表現を指定し ます。 position position は、ソース文字列の開始位置を示す整数値を指定します。デフォルト値は 1 です。 occurrence occurrence は、検索された文字列に複数のパターンが出現した場合にどの一致が返されるかを指定します。デフォルト値は 1 です。 returnparam returnparam は、 REGEXP _ INSTR が返す 文字列内の位置を指定する整数値です 。デフォルト値は 0 です。指定: 0 一致する最初の文字の文字列内の位置を返すように pattern 。 pattern 終わりに続く最初の文字の位置を返すには、 0 より大きい値 。 modifier modifier は、パターンマッチングの動作を制御する値を指定します。デフォルト値は NULL です。 Advanced Serverで サポートされる修飾子の完全なリスト については、次のURLにあるPostgreSQLのコアドキュメントを参照してください。 https://www.postgresql.org/docs/10/static/functions-matching.html subexpression subexpression は、 REGEXP _ INSTR によって返される pattern の部分を識別する整数値です 。 subexpression のデフォルト値 は 0 です。 subexpression 値を指定する場合 は、検索対象の値の一部を分離する pattern に1つ(またはそれ以上)のかっこを含める必要があります 。 subexpression 指定された値 は、返される括弧のセットを示します。たとえば、 subexpression が 2 場合 、 REGEXP _ INSTR は2番目の括弧の位置を返します。 例 次の簡単な例では、 REGEXP_INSTR は、3桁の連続する数字を含むパターンが最初に出現する電話番号を含む文字列を検索します。 edb=# SELECT
REGEXP_INSTR( '800-555-1212'、[0-9] [0-9] [0-9] '、1、1)FROM DUAL; regexp_instr -------------- 1 (1 row) このコマンドは、 REGEXP_INSTR に最初に発生した位置を返す ように指示し ます。 3つの連続した数字の2番目の出現の開始を返すようにコマンドを変更した場合: edb=# SELECT REGEXP_INSTR('800-555-1212', '[0-9][0-9][0-9]', 1, 2) FROM DUAL; regexp_instr -------------- 5 (1 row) REGEXP _ INSTR は 5 返します 。 3桁の連続する数字の2番目の出現は5 番目の位置から始まります。 REGEXP _ SUBSTR 機能は、POSIX準拠の正規表現で指定されたパターンの文字列を検索します。 REGEXP_SUBSTR は、関数の呼び出しで指定されたパターンに一致する文字列を返します。関数のシグネチャは次のとおりです。 TEXT REGEXP_SUBSTR パラメーター: srcstr srcstr は、検索する文字列を指定します。 pattern pattern は、 REGEXP _ SUBSTR が検索 する正規表現を指定し ます。 position position は、ソース文字列の開始位置を示す整数値を指定します。デフォルト値は 1 です。 occurrence occurrence は、検索された文字列に複数のパターンが出現した場合にどの一致が返されるかを指定します。デフォルト値は 1 です。 modifier modifier は、パターンマッチングの動作を制御する値を指定します。デフォルト値は NULL です。 Advanced Serverで サポートされる修飾子の完全なリスト については、次のURLにあるPostgreSQLのコアドキュメントを参照してください。 https://www.postgresql.org/docs/10/static/functions-matching.html subexpression subexpression は、 REGEXP _ SUBSTR によって返される pattern の部分を識別する整数値 SUBSTR 。 subexpression のデフォルト値 は 0 です。 subexpression 値を指定する場合 は、検索対象の値の一部を分離する pattern に1つ(またはそれ以上)のかっこを含める必要があります 。 subexpression 指定された値 は、返される括弧のセットを示します。たとえば、 subexpression が 2 場合 、 REGEXP _ SUBSTR は2番目の括弧のセットに含まれる値を返します。 例 次の簡単な例では、 REGEXP_SUBSTR は、3桁の連続した数字の最初のセットの電話番号を含む文字列を検索します。 edb=# SELECT REGEXP_SUBSTR('800-555-1212', '[0-9][0-9][0-9]', 1, 1) FROM DUAL; regexp_substr --------------- 800 (1 row) 最初の3桁の数字を検索し、文字列( 800 ) を返します 。 3つの連続した数字の2番目の出現をチェックするコマンドを変更した場合: edb=# SELECT REGEXP_SUBSTR('800-555-1212', '[0-9][0-9][0-9]', 1, 2) FROM DUAL; regexp_substr --------------- 555 (1 row) REGEXP _ SUBSTR は 、2番目の部分文字列の内容である 555 返します 。 Advanced Server は従来の SQL を使用したパターンマッチングを提供し ます LIKE 演算子。 LIKE 演算子 の構文 は次のとおりです。 string LIKE pattern [ ESCAPE escape-character ] string NOT LIKE pattern [ ESCAPE escape-character ] すべての pattern は一連の文字列を定義します。 LIKE 式を返し true 場合は string 表される文字列のセットに含まれている pattern 。予想通り、 NOT LIKE 式は 、 LIKE が true 返す 場合 は false 返し 、逆の 場合 は false 返し true 。同等の式は NOT ( string LIKE pattern ) です。 pattern パーセント記号またはアンダースコアが含まれていない 場合、 pattern は文字列自体のみを表します。その場合 LIKE はequals演算子のように動作します。 pattern のアンダースコア( _ )は、 任意の1文字を表します(一致します)。パーセント記号( % )は0文字以上の任意の文字列に一致します。 いくつかの例: 'abc' LIKE 'abc' true 'abc' LIKE 'a%' true 'abc' LIKE '_b_' true 'abc' LIKE 'c' false LIKE パターンマッチは、常に文字列全体をカバーします。文字列内の任意の場所にパターンをマッチさせるには、パターンをパーセント記号で開始して終了する必要があります。 リテラルのアンダースコアまたはパーセント記号を他の文字とマッチさせることなくマッチ させるには 、 pattern 内のそれぞれの文字の 前にエスケープ文字を付ける必要があります。デフォルトのエスケープ文字はバックスラッシュですが、 ESCAPE 句 を使用して別のエスケープ文字を選択できます 。エスケープ文字自体を一致させるには、2つのエスケープ文字を書きます。 バックスラッシュはすでに文字列リテラルで特別な意味を持っているので、バックスラッシュを含むパターン定数を書くには、 SQL文に2つのバックスラッシュを記述する必要があります 。したがって、実際にリテラルのバックスラッシュと一致するパターンを書くことは、ステートメントに4つのバックスラッシュを書くことを意味します。これを回避するには、 ESCAPE 別のエスケープ文字を選択し ます。バックスラッシュは もう LIKE 特別なものではあり ません。 (しかし、文字列リテラルパーサーにとってはまだ特殊なので、まだ2つ必要です。) ESCAPE ''. 書くことで、エスケープ文字を選択することもできます ESCAPE ''. これにより、効果的にエスケープメカニズムが無効になり、パターン内のアンダースコアとパーセント記号の特別な意味を無効にすることができなくなります。 次の表に示す 高度なサーバー フォーマット機能は、強力な様々なデータタイプを変換するためのツールのセット(日付/時刻、整数、数値ポイントを、フローティング)フォーマット文字列に、特定のデータ型にフォーマット文字列から変換するために提供します。これらの関数はすべて共通の呼び出し規約に従います。最初の引数は書式設定される値で、2番目の引数は出力または入力形式を定義する文字列テンプレートです。 表 2 - 19 フォーマット関数 Function Return Type Description Example Result TO_CHAR(DATE [, format ]) VARCHAR2 日付、時刻を出力 形式の 文字列に変換し ます 。省略した場合、デフォルトの形式はDD-MON-YYです。 TO_CHAR(SYSDATE, 'MM/DD/YYYY HH12:MI:SS AM') 07/25/2007 09:43:02 AM TO_CHAR(TIMESTAMP [, format ]) VARCHAR2 タイムスタンプを出力 形式の 文字列に変換し ます 。省略した場合、デフォルトの形式はDD-MON-YYです。 TO_CHAR(CURRENT_TIMESTAMP, 'MM/DD/YYYY HH12:MI:SS AM') 08/13/2015 08:55:22 PM TO_CHAR(INTEGER [, format ]) VARCHAR2 変換する
出力形式の文字列に整数を指定する TO_CHAR(2412, '999,999S') 2,412+ TO_CHAR(NUMBER [, format ]) VARCHAR2 出力 形式の 10進数を文字列に変換する TO_CHAR(10125.35, '999,999.99') 10,125.35 TO_CHAR(DOUBLE PRECISION, format ) VARCHAR2 浮動小数点数を出力 形式の 文字列に変換する TO_CHAR(CAST(123.5282 AS REAL), '999.99') 123.53 TO_DATE( 文字列 [, 書式 ]) DATE 日付形式の文字列を DATE データ型に 変換する TO_DATE('2007-07-04 13:39:10', 'YYYY-MM-DD HH24:MI:SS') 04-JUL-07 13:39:10 TO_NUMBER( 文字列 [, フォーマット ]) NUMBER 数値形式の文字列を NUMBER データ型に 変換する TO_NUMBER('2,412-', '999,999S') -2412 TO_TIMESTAMP( 文字列 , フォーマット ) TIMESTAMP タイムスタンプ形式の文字列を TIMESTAMP データ型に 変換する TO_TIMESTAMP('05 Dec 2000 08:30:25 pm', 'DD Mon YYYY hh12:mi:ss pm') 05-DEC-00 20:30:25 出力テンプレート文字列( TO_CHAR )には、フォーマットされる値から認識され、適切にフォーマットされたデータに置き換えられる特定のパターンがあります。テンプレートパターンではないテキストはそのままそのままコピーされます。同様に、入力テンプレート文字列( TO_CHAR 以外の文字列 )では、テンプレートパターンは、参照される入力データ文字列の部分とそこで見つかる値を識別します。 次の表は、 TO_CHAR および TO_DATE 関数 を使用して日付値を書式設定するために使用可能なテンプレートパターンを示してい ます。 表 2 - 20 テンプレートの日付/時刻書式パターン Pattern Description HH 時間帯(01-12) HH12 時間帯(01-12) HH24 時間(00-23) MI 分(00-59) SS 2番目(00-59) SSSSS 真夜中を過ぎた秒数(0-86399) FF n 分数秒( n は1から9までの任意の整数)戻り値の桁数。省略すると、デフォルトは6です。 AM or AM or PM or PM メリディアンインジケータ(大文字) am or am or pm or pm メリディアンインジケータ(小文字) Y,YYY 年(4桁以上)のカンマ YEAR 年(スペルアウト) SYEAR 年(綴り)(BCの日付にマイナス記号が付いています) YYYY 年(4桁以上) SYYYY 年(4桁以上)(BCの日付の前にマイナス記号が付いています) YYY 年の最後の3桁 YY 年の最後の2桁 Y 年の最後の桁 IYYY ISO年(4桁以上) IYY ISO年の最後の3桁 IY ISO年の最後の2桁 I ISO年の最後の1桁 BC or BC or AD or AD 時代インジケータ(大文字) bc or bc or ad or ad 時代のインジケータ(小文字) MONTH 完全な大文字の月の名前 Month フル
大文字と小文字の両方の月名 month 完全な小文字の月名 MON 簡略化された大文字の月名(英語では3文字、ローカライズされた長さは異なる) Mon 簡略化された大文字小文字の月の名前(英語では3文字、ローカライズされた長さは異なる) mon 省略された小文字の月名(英語では3文字、ローカライズされた長さは異なる) MM 月の番号(01-12) DAY 大文字の完全な曜日名 Day 大文字と小文字の混在した曜日 day 完全な小文字の姓 DY 短縮された大文字の曜日名(英語では3文字、地域別の長さは異なる) Dy 簡略化された大文字と小文字の混在した曜日名(英語では3文字、地域別の長さは異なる) dy 簡略化された小文字の曜日名(英語では3文字、ローカライズされた長さは異なる) DDD 日(001-366) DD 月の日(01-31) D 曜日(1-7;日曜日は1) W 週の月(1-5)(最初の週はその月の最初の日に始まります) WW 週の年数(1-53)(最初の週は1年の最初の日から始まります) IW 年のISO週番号。新年の最初の木曜日は第1週目です CC センチュリー(2桁); 21世紀は2001年1月1日から始まる SCC BCの日付にマイナス記号を前置する以外はCCと同じです J ユリウス日(紀元前4712年1月1日以降の日数) Q 四半期 RM 月はローマ数字で(I-XII; I = 1月)(大文字) rm 月のローマ数字(i-xii; i = 1月)(小文字) RR 年の最後の2桁のみが与えられたときの最初の2桁の数字。結果は、現在の年と2桁の年を使用するアルゴリズムに基づいています。指定された2桁の年の最初の2桁は、次の例外を除いて、現在の年の最初の2桁と同じになります。 与えられた2桁の年が50未満で、現在の年の最後の2桁が50以上の場合、その年の最初の2桁は現在の年の最初の2桁より1大きい。 与えられた2桁の年が> = 50で、現在の年の最後の2桁が50未満の場合、その年の最初の2桁は現在の年の最初の2桁より1少ないです。 RRRR TO_DATE機能にのみ影響します。 2桁または4桁の年を指定できます。 2桁の年を指定すると、RR形式のように、年の最初の2桁を返します。指定された4桁の年の場合、指定された4桁の年を返します。 特定の修飾子は、その動作を変更するために任意のテンプレートパターンに適用できます。たとえば、 FMMonth は FM 修飾子を含む Month パターン です。次の表は、日付/時刻の書式設定用の修飾子パターンを示しています。 表 2 - 日付/時刻書式のテンプレートパターン修飾子 21 Modifier Description Example FM プリフィックス 塗りつぶしモード(塗りの空白とゼロを抑制する) FMMonth TH 接尾辞 大文字の序数の接尾辞 DDTH th 接尾辞 小文字の序数の接尾辞 DDth FX 接頭辞 固定形式グローバルオプション(使用上の注意を参照) FX Month DD Day SP サフィックス スペルモード DDSP 日付/時刻書式の使用上の注意: ・ FM 、先行するゼロと後続ブランクが抑制されます。これは、パターンの幅を固定幅にするために追加されます。 ・ TO_TIMESTAMP と TO_DATE は 、 FX オプションが使用されていない 場合、入力文字列内の複数の空白をスキップし ます。 FX は、テンプレートの最初の項目として指定する必要があります。例えば TO_TIMESTAMP('2000 JUN', 'YYYY MON') 正しいが、 TO_TIMESTAMP('2000 JUN', 'FXYYYY MON') あるため、エラーを返し TO_TIMESTAMP 一つだけのスペースを期待します。 ・ 通常のテキストは TO_CHAR テンプレート で TO_CHAR でき、 そのまま出力されます。 ・ 文字列から timestamp または date への変換 では、 YYY 、 YYYY または Y,YYY フィールド がある場合 、 CC フィールドは無視され ます。 CC を YY または Y とともに使用する 場合 、年は (CC-1)*100+YY として計算され ます。 次の表は、数値の書式設定に使用できるテンプレートパターンを示しています。 表 2 - 数値書式のテンプレートパターン 22 Pattern Description 9 指定された桁数の値 0 先行ゼロの値 . (期間) 小数点 , (カンマ) グループ(千)セパレータ $ ドル記号 PR 山括弧内の負の値 S 番号に固定されたサインをサイン(ロケールを使用) L 通貨記号(ロケールを使用) D 小数点(ロケールを使用) G グループセパレータ(ロケールを使用) MI 最も右の位置に指定されたマイナス記号(数字<0の場合) RN または rn ローマ数字(1〜3999の間の入力) V 指定された桁数をシフトする(ノートを参照) 数値書式の使用上の注意: ・ 9 そことしての桁数が同じ値の結果は 9s 。数字が利用できない場合は、空白が出力されます。 ・ TH ゼロより小さい値を変換せず、小数を変換しません。 V 効果的にすることによって、入力値を乗算し 10 n 、 n 次の桁数である V 。 TO_CHAR は 小数点を組み合わせた V の使用をサポートしていません 。 (たとえば、 99.9V99 は使用できません)。 次の表は、 TO_CHAR および TO_DATE 関数の 使用例を示してい ます。 表 2 - 23 TO_CHARの例 Expression Result TO_CHAR(CURRENT_TIMESTAMP, 'Day, DD HH12:MI:SS') 'Tuesday , 06 05:39:18' TO_CHAR(CURRENT_TIMESTAMP, 'FMDay, FMDD HH12:MI:SS') 'Tuesday, 6 05:39:18' TO_CHAR(-0.1, '99.99') ' -.10' TO_CHAR(-0.1, 'FM9.99') '-.1' TO_CHAR(0.1, '0.9') ' 0.1' TO_CHAR(12, '9990999.9') ' 0012.0' TO_CHAR(12, 'FM9990999.9') '0012.' TO_CHAR(485, '999') ' 485' TO_CHAR(-485, '999') '-485' TO_CHAR(1485, '9,999') ' 1,485' TO_CHAR(1485, '9G999') ' 1,485' TO_CHAR(148.5, '999.999') ' 148.500' TO_CHAR(148.5, 'FM999.999') '148.5' TO_CHAR(148.5, 'FM999.990') '148.500' TO_CHAR(148.5, '999D999') ' 148.500' TO_CHAR(3148.5, '9G999D999') ' 3,148.500' TO_CHAR(-485, '999S') '485-' TO_CHAR(-485, '999MI') '485-' TO_CHAR(485, '999MI') '485 ' TO_CHAR(485, 'FM999MI') '485' TO_CHAR(-485, '999PR') '<485>' TO_CHAR(485, 'L999') '$ 485' TO_CHAR(485, 'RN') ' CDLXXXV' TO_CHAR(485,
'FMRN') 'CDLXXXV' TO_CHAR(5.2, 'FMRN') 'V' TO_CHAR(12, '99V999') ' 12000' TO_CHAR(12.4, '99V999') ' 12400' TO_CHAR(12.45, '99V9') ' 125' 関数の IMMUTABLE 形式を 使用する可能性のある TO_CHAR 関数の 特定のケースがあり ます。基本的には、関数が データベースを変更せず、関数がその入力パラメーターだけに依存して同じ一貫した値を返す場合、 関数は IMMUTABLE です。つまり、構成パラメータ、ロケール、データベースの内容などの設定は、関数が返す結果に影響を与えません。 関数のボラティリティカテゴリ VOLATILE 、 STABLE 、および IMMUTABLE 詳細については、PostgreSQL Coreのドキュメントを参照してください。 https://www.postgresql.org/docs/10/static/xfunc-volatility.html IMMUTABLE 関数の 特別な利点は 、 CREATE INDEX コマンドでその関数に基づいた索引を作成できることです。 TO_CHAR 関数が IMMUTABLE 形式 を使用 するためには 、次の条件を満たす必要があります。 ・ TO_CHAR ファンクション の最初のパラメータは、 データ型 TIMESTAMP なければなりません 。 ・ 2番目のパラメータで指定された形式 TO_CHAR 機能は、例えばの形式などの言語、ロケール、などの要因に基づいて関数の戻り値に影響を与えてはならない 'YYYY-MM-DD HH24:MI:SS' することができ 関数の IMMUTABLE 形式に 使用され ます。これは、ロケール設定に関係なく、関数の結果は日付形式のみで表現されるためです。ただし、 'DD-MON-YYYY' の3文字の省略形はロケール設定によって異なる結果を返す可能性があるため、 'DD-MON-YYYY' 形式は IMMUTABLE 形式の関数には 使用できません 。 不変でない関数になるフォーマットパターンには、スペルアウトまたは短縮月( MONTH 、 MON )、日( DAY 、 DY )、メジアンインジケータ( AM 、 PM )、または時代インジケータ( BC 、 AD )の バリエーションが含まれます 。 次の例では、 TIMESTAMP 列を 持つ表 が作成されます。 CREATE TABLE ts_tbl (ts_col TIMESTAMP); TO_CHAR 関数の IMMUTABLE 形式の 索引が正常に作成されたことを以下に示し ます。 edb=# CREATE INDEX ts_idx ON ts_tbl (TO_CHAR(ts_col,'YYYY-MM-DD HH24:MI:SS')); CREATE INDEX edb=# \dS ts_idx Index "public.ts_idx" Column | Type | Definition ---------+-------------------+------------------------------------------------------------- to_char | character varying | to_char(ts_col, 'YYYY-MM-DD HH24:MI:SS'::character varying) btree, for table "public.ts_tbl" TO_CHAR 関数で 指定された 形式では、3文字の月の略語 MON がロケール設定に基づいて異なる戻り値になる可能性があるため 、 IMMUTABLE 形式を 使用できない ため、エラーが発生 します。 edb=# CREATE INDEX ts_idx_2 ON ts_tbl (TO_CHAR(ts_col, 'DD-MON-YYYY')); ERROR: functions in index expression must be marked IMMUTABLE 表2-25 日付/時刻値処理に使用可能な関数を示します。詳細は次のサブセクションに記載されています。次の表は、基本的な算術演算子(+、 - )の動作を示しています。フォーマット機能については、セクション 2.4.7 。セクションの日付/時刻データ型の背景情報に精通している必要があります 2.2.4 。 表 2 - 24 日時演算子 Operator Example Result + DATE
'2001-09-28' + 7 05-OCT-01 00:00:00 + TIMESTAMP '2001-09-28 13:30:00' + 3 01-OCT-01 13:30:00 - DATE '2001-10-01' – 7 24-SEP-01 00:00:00 - TIMESTAMP '2001-09-28 13:30:00' - 3 25-SEP-01 13:30:00 - TIMESTAMP '2001-09-29 03:00:00' - TIMESTAMP '2001-09-27 12:00:00' @ 1 day 15 hours 次の表の日付/時刻関数では、 DATE および TIMESTAMP データ型の使用は互換性が あり TIMESTAMP 。 表 2 - 25 日時関数 Function Return Type Description Example Result ADD_MONTHS(DATE, NUMBER) DATE 月に月を追加する。セクション 2.4.8.1を 参照してください 。 ADD_MONTHS('28-FEB-97', 3.8) 31-MAY-97 00:00:00 CURRENT_DATE DATE 現在の日付;セクションを参照 2.4.8.8 CURRENT_DATE 04-JUL-07 CURRENT_TIMESTAMP TIMESTAMP 現在の日付と時刻を返します。セクション 2.4.8.8を 参照してください 。 CURRENT_TIMESTAMP 04-JUL-07 15:33:23.484 EXTRACT( フィールド FROM TIMESTAMP) DOUBLE PRECISION サブフィールドを取得します。セクション 2.4.8.2を 参照してください 。 EXTRACT(hour FROM TIMESTAMP '2001-02-16 20:38:40') 20 LAST_DAY(DATE) DATE 指定された日付で表される月の最後の日を返します。指定された日付に時間部分が含まれている場合、結果は変更されずに転送されます。 LAST_DAY('14-APR-98') 30-APR-98 00:00:00 LOCALTIMESTAMP [ ( precision ) ] TIMESTAMP 現在の日付と時刻(現在のトランザクションの開始)。セクション 2.4.8.8を 参照してください 。 LOCALTIMESTAMP 04-JUL-07 15:33:23.484 MONTHS_BETWEEN(DATE, DATE) NUMBER 2つの日付間の月数。セクション 2.4.8.3を 参照してください 。 MONTHS_BETWEEN('28-FEB-07', '30-NOV-06') 3 NEXT_DAY(DATE, dayofweek ) DATE 特定の日の後 に 日曜日に 降る 日付。セクションを参照 2.4.8.4 NEXT_DAY('16-APR-07','FRI') 20-APR-07 00:00:00 NEW_TIME(DATE, VARCHAR, VARCHAR) DATE 日付と時刻を代替のタイムゾーンに変換します。 NEW_TIME(TO_DATE '2005/05/29 01:45', 'AST', 'PST') 2005/05/29 21:45:00 NUMTODSINTERVAL(NUMBER, INTERVAL) INTERVAL 数値を指定された日または秒の間隔に変換します。 2.4.8.9 項を参照してください 。 SELECT numtodsinterval(100, 'hour'); 4 days 04:00:00 NUMTOYMINTERVAL(NUMBER, INTERVAL) INTERVAL 数値を指定された年または月の間隔に変換します。 2.4.8.10 項を参照してください 。 SELECT numtoyminterval(100, 'month'); 8 years 4 mons ROUND(DATE [, format ]) DATE 形式 に従って丸められた日付 。セクション 2.4.8.6を 参照してください 。 ROUND(TO_DATE('29-MAY-05'),'MON') 01-JUN-05 00:00:00 SYS_EXTRACT_UTC(TIMESTAMP
時間帯付き) TIMESTAMP 協定世界時を返す SYS_EXTRACT_UTC(CAST('24-MAR-11 12:30:00PM -04:00' AS TIMESTAMP WITH TIME ZONE)) 24-MAR-11 16:30:00 SYSDATE DATE 現在の日付と時刻を返します。 SYSDATE 01-AUG-12 11:12:34 SYSTIMESTAMP() TIMESTAMP 現在の日付と時刻を返します。 SYSTIMESTAMP 01-AUG-12 11:11:23.665229 -07:00 TRUNC(DATE [ 書式 ]) DATE フォーマットに従って切り捨てる。 2.4.8.7 項を参照してください 。 TRUNC(TO_DATE('29-MAY-05'), 'MON') 01-MAY-05 00:00:00 ADD_MONTHS 関数指定された日付にヶ月の指定された数を加算(または2番目のパラメータが負の場合は減算します)。結果の日付は、その日の最後の日である場合を除いて、指定された日付の月の日と同じです。その場合、結果の日付は常にその月の最終日になります。 月数パラメータの小数部分は、計算を実行する前に切り捨てられます。 指定された日付に時間部分が含まれている場合、結果は変更されずに転送されます。 以下は、 ADD_MONTHS 関数の 例です 。 SELECT ADD_MONTHS('13-JUN-07',4) FROM DUAL; add_months -------------------- 13-OCT-07 00:00:00 (1 row) SELECT ADD_MONTHS('31-DEC-06',2) FROM DUAL; add_months -------------------- 28-FEB-07 00:00:00 (1 row) SELECT ADD_MONTHS('31-MAY-04',-3) FROM DUAL; add_months -------------------- 29-FEB-04 00:00:00 (1 row) EXTRACT 機能は、日付/時刻の値から年や時などの部分フィールドを抽出します。 EXTRACT 関数は、型の値を返し DOUBLE PRECISION 。有効なフィールド名は次のとおりです。 YEAR 年フィールド SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40') FROM DUAL; date_part ----------- 2001 (1 row) MONTH 1年以内の月の数(1 - 12) SELECT EXTRACT(MONTH FROM TIMESTAMP '2001-02-16 20:38:40') FROM DUAL; date_part ----------- 2 (1 row) DAY 日(月)フィールド(1〜31) SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40') FROM DUAL; date_part ----------- 16 (1 row) HOUR 時間フィールド(0〜23) SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40') FROM DUAL; date_part ----------- 20 (1 row) MINUTE 分フィールド(0〜59) SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 20:38:40') FROM DUAL; date_part ----------- 38 (1 row) SECOND 小数部分(0〜59)を含む秒フィールドは、 SELECT EXTRACT(SECOND FROM TIMESTAMP '2001-02-16 20:38:40') FROM DUAL; date_part ----------- 40 (1 row) MONTHS_BETWEEN 機能は、2つの日付の間の月数を返します。結果は、最初の日付が2番目の日付よりも大きい場合は正の数値で、最初の日付が2番目の日付よりも小さい場合は負の数値になります。 両方の日付パラメータの月の日が同じ場合、または両方の日付パラメータがそれぞれの月の最終日に該当する場合、結果は常に月数になります。 MONTHS_BETWEEN 関数の 例を次に MONTHS_BETWEEN ます。 SELECT MONTHS_BETWEEN('15-DEC-06','15-OCT-06') FROM DUAL; months_between ---------------- 2 (1 row) SELECT MONTHS_BETWEEN('15-OCT-06','15-DEC-06') FROM DUAL; months_between ---------------- -2 (1 row) SELECT MONTHS_BETWEEN('31-JUL-00','01-JUL-00') FROM DUAL; months_between ---------------- 0.967741935 (1 row) SELECT MONTHS_BETWEEN('01-JAN-07','01-JAN-06') FROM DUAL; months_between ---------------- 12 (1 row) NEXT_DAY 関数は、指定された日付よりも厳密に大きい所定の曜日の最初の発生を返します。少なくとも平日の最初の3文字を指定する必要があります(例: SAT 。指定された日付に時間部分が含まれている場合、結果は変更されずに転送されます。 以下は、 NEXT_DAY 関数の 例です 。 SELECT NEXT_DAY(TO_DATE('13-AUG-07','DD-MON-YY'),'SUNDAY') FROM DUAL; next_day -------------------- 19-AUG-07 00:00:00 (1 row) SELECT NEXT_DAY(TO_DATE('13-AUG-07','DD-MON-YY'),'MON') FROM DUAL; next_day -------------------- 20-AUG-07 00:00:00 (1 row) NEW_TIMEの 関数は、1つのタイムゾーンから別の日付と時刻を変換します。 NEW_TIME は、 DATE 型の値を返します 。構文は次のとおりです。 NEW_TIME( DATE 、 time_zone1 、 time_zone2 ) time_zone1 と time_zone2 は、次の表のタイムゾーン列の文字列値である必要があります。 表 2 - 26 タイムゾーン Time Zone Offset from UTC Description AST UTC + 4 大西洋標準時 ADT UTC + 3 大西洋夏時間 BST UTC + 11 ベーリング標準時 BDT UTC + 10 ベーリング夏時間 CST UTC + 6 中央標準時 CDT UTC + 5 中央夏時間 EST UTC + 5 東部標準時 EDT UTC + 4 東部夏時間 GMT UTC グリニッジ標準時 HST UTC + 10 アラスカ - ハワイ標準時 HDT UTC + 9 アラスカ - ハワイ夏時間 MST UTC + 7 マウンテンスタンダードタイム MDT UTC + 6 マウンテンデイライトタイム NST UTC + 3:30 ニューファンドランド標準時 PST UTC + 8 太平洋標準時 PDT UTC + 7 太平洋夏時間 YST UTC + 9 ユーコン標準時 YDT UTC + 8 ユーコン夏時間 以下は、
"Courier New" '> NEW_TIME 機能。 SELECT NEW_TIME(TO_DATE('08-13-07 10:35:15','MM-DD-YY HH24:MI:SS'),'AST', 'PST') "Pacific Standard Time" FROM DUAL; Pacific Standard Time --------------------- 13-AUG-07 06:35:15 (1 row) ROUND 関数は、指定されたテンプレートパターンに従って丸められた日付を返します。テンプレートパターンを省略すると、日付は最も近い日に丸められます。次の表は、 ROUND 関数の テンプレートパターンを示してい ます。 表 2 - ROUND関数のための 27 のテンプレート日付パターン Pattern Description CC, SCC 戻り値1月1日、 cc 01ここで、 cc は、最後の2桁が50より大きい場合、指定された年の最初の2桁です。最後の2桁が50より大きい場合は、指定された年の最初の2桁よりも大きくなります。 (AD年間) SYYY, YYYY, YEAR, SYEAR, YYY, YY, Y 1月1日 、YYYYは 最も近い年に丸められ yyyyは 返します 。 6月30日にラウンドダウン、7月1日にラウンドアップ IYYY, IYY, IY, I 月と日が6月30日以前の場合は切り捨て、7月1日以降は切り上げることで決まるISO年の初めに丸めます Q 月と日が四半期の2番目の月の15日またはそれ以前の場合は四捨五入によって決定された四半期の最初の日を返します。月と日が2番目の月の16日またはそれ以降の場合は切り上げます四半期 MONTH, MON, MM, RM 指定された月の日が15日前または15日前の場合は、指定された月の最初の日を返します。月の日付が16日以降の場合は、次の月の最初の日を返します。 WW 年の最初の日と同じ曜日に対応する最も近い日付に丸めます IW ISO年の最初の日と同じ曜日に対応する最も近い日付に丸めます W 月の最初の日と同じ曜日に対応する最も近い日付に丸めます DDD, DD, J 最も近い日の始まりに丸めます。同日の午前11時59分59午前またはそれ以前のラウンド。 12:00:00 PM以降の翌日の開始までのラウンド DAY, DY, D 最も近い日曜日に回します HH, HH12, HH24 最も近い時間に丸める MI 最も近い分への丸め 以下は、 ROUND 関数の 使用例です 。 以下の例は、最も近い百年に丸めます。 SELECT TO_CHAR(ROUND(TO_DATE('1950','YYYY'),'CC'),'DD-MON-YYYY') "Century" FROM DUAL; Century ------------- 01-JAN-1901 (1 row) SELECT TO_CHAR(ROUND(TO_DATE('1951','YYYY'),'CC'),'DD-MON-YYYY') "Century" FROM DUAL; Century ------------- 01-JAN-2001 (1 row) 以下の例は、最も近い年に丸めます。 SELECT TO_CHAR(ROUND(TO_DATE('30-JUN-1999','DD-MON-YYYY'),'Y'),'DD-MON-YYYY') "Year" FROM DUAL; Year ------------- 01-JAN-1999 (1 row) SELECT TO_CHAR(ROUND(TO_DATE('01-JUL-1999','DD-MON-YYYY'),'Y'),'DD-MON-YYYY') "Year" FROM DUAL; Year ------------- 01-JAN-2000 (1 row) 次の例は、最も近いISO年に丸めます。最初の例は、2004年に丸め年と2004年のISO年は、2003年12月29 日に始まる第二の例は、2005年に丸め年と2005年のISO年はその同じ年の1月3日、RD上で開始されます。 (ISO年は、月曜日から日曜日までの7日間の範囲内にある最初の月曜日から始まり、新年の少なくとも4日間を含むため、ISO年の開始は前年の12月に開始することができます。) SELECT TO_CHAR(ROUND(TO_DATE('30-JUN-2004','DD-MON-YYYY'),'IYYY'),'DD-MON-YYYY') "ISO Year" FROM DUAL; ISO Year ------------- 29-DEC-2003 (1 row) SELECT TO_CHAR(ROUND(TO_DATE('01-JUL-2004','DD-MON-YYYY'),'IYYY'),'DD-MON-YYYY') "ISO Year" FROM DUAL; ISO Year ------------- 03-JAN-2005 (1 row) 次の例は、最も近い四半期に丸めます。 SELECT ROUND(TO_DATE('15-FEB-07','DD-MON-YY'),'Q') "Quarter" FROM DUAL; Quarter -------------------- 01-JAN-07 00:00:00 (1 row) SELECT ROUND(TO_DATE('16-FEB-07','DD-MON-YY'),'Q') "Quarter" FROM DUAL; Quarter -------------------- 01-APR-07 00:00:00 (1 row) 次の例は、最も近い月に丸めます。 SELECT ROUND(TO_DATE('15-DEC-07','DD-MON-YY'),'MONTH') "Month" FROM DUAL; Month -------------------- 01-DEC-07 00:00:00 (1 row) SELECT ROUND(TO_DATE('16-DEC-07','DD-MON-YY'),'MONTH') "Month" FROM DUAL; Month -------------------- 01-JAN-08 00:00:00 (1 row) 次の例は、最も近い週に丸めます。最初の例のように月曜日の2007年の土地の最初の日は、1月18日番目の1月15 日に土地月曜日に最も近いです。 2番目の例では、1月19日回目は 1月22日回目にあたる月曜日に近いです。 SELECT ROUND(TO_DATE('18-JAN-07','DD-MON-YY'),'WW') "Week" FROM DUAL; Week -------------------- 15-JAN-07 00:00:00 (1 row) SELECT ROUND(TO_DATE('19-JAN-07','DD-MON-YY'),'WW') "Week" FROM DUAL; Week -------------------- 22-JAN-07 00:00:00 (1 row) 次の例は、最も近いISO週に丸めます。 ISO週は月曜日から始まります。最初に
2004年1月1日は、2003年12月29日の月曜日に最も近いです。第2の例では、2004年1月2日は2004年1月5日の月曜日に近いです。 SELECT ROUND(TO_DATE('01-JAN-04','DD-MON-YY'),'IW') "ISO Week" FROM DUAL; ISO Week -------------------- 29-DEC-03 00:00:00 (1 row) SELECT ROUND(TO_DATE('02-JAN-04','DD-MON-YY'),'IW') "ISO Week" FROM DUAL; ISO Week -------------------- 05-JAN-04 00:00:00 (1 row) 次の例は、最も近い週にラウンドして、1週間がその月の最初の日と同じ日に開始されると見なされます。 SELECT ROUND(TO_DATE('05-MAR-07','DD-MON-YY'),'W') "Week" FROM DUAL; Week -------------------- 08-MAR-07 00:00:00 (1 row) SELECT ROUND(TO_DATE('04-MAR-07','DD-MON-YY'),'W') "Week" FROM DUAL; Week -------------------- 01-MAR-07 00:00:00 (1 row) 次の例は、最も近い日に丸めます。 SELECT ROUND(TO_DATE('04-AUG-07 11:59:59 AM','DD-MON-YY HH:MI:SS AM'),'J') "Day" FROM DUAL; Day -------------------- 04-AUG-07 00:00:00 (1 row) SELECT ROUND(TO_DATE('04-AUG-07 12:00:00 PM','DD-MON-YY HH:MI:SS AM'),'J') "Day" FROM DUAL; Day -------------------- 05-AUG-07 00:00:00 (1 row) 次の例は、最も近い曜日(日曜日)の開始に丸めます。 SELECT ROUND(TO_DATE('08-AUG-07','DD-MON-YY'),'DAY') "Day of Week" FROM DUAL; Day of Week -------------------- 05-AUG-07 00:00:00 (1 row) SELECT ROUND(TO_DATE('09-AUG-07','DD-MON-YY'),'DAY') "Day of Week" FROM DUAL; Day of Week -------------------- 12-AUG-07 00:00:00 (1 row) 以下の例は、最も近い時間に丸めます。 SELECT TO_CHAR(ROUND(TO_DATE('09-AUG-07 08:29','DD-MON-YY HH:MI'),'HH'),'DD-MON-YY HH24:MI:SS') "Hour" FROM DUAL; Hour -------------------- 09-AUG-07 08:00:00 (1 row) SELECT TO_CHAR(ROUND(TO_DATE('09-AUG-07 08:30','DD-MON-YY HH:MI'),'HH'),'DD-MON-YY HH24:MI:SS') "Hour" FROM DUAL; Hour -------------------- 09-AUG-07 09:00:00 (1 row) 次の例は、最も近い分に丸めます。 SELECT TO_CHAR(ROUND(TO_DATE('09-AUG-07 08:30:29','DD-MON-YY HH:MI:SS'),'MI'),'DD-MON-YY HH24:MI:SS') "Minute" FROM DUAL; Minute -------------------- 09-AUG-07 08:30:00 (1 row) SELECT TO_CHAR(ROUND(TO_DATE('09-AUG-07 08:30:30','DD-MON-YY HH:MI:SS'),'MI'),'DD-MON-YY HH24:MI:SS') "Minute" FROM DUAL; Minute -------------------- 09-AUG-07 08:31:00 (1 row) TRUNC 関数は、指定されたテンプレートパターンに従って切り捨てられた日付を返します。テンプレートパターンを省略すると、日付は最も近い日に切り捨てられます。次の表は、 TRUNC 関数の テンプレートパターンを示してい ます。 表 2 - TRUNCファンクションの 28個の テンプレート日付パターン Pattern Description CC, SCC 1月1日 、ccは 指定された年の最初の2桁 のcc 01を 返します SYYY, YYYY, YEAR, SYEAR, YYY, YY, Y 1月1日 、yyyyは 指定された年である yyyyは 返します IYYY, IYY, IY, I 指定された日付を含むISO年の開始日を返します。 Q 指定された日付を含む四半期の最初の日を返します。 MONTH, MON, MM, RM 指定した月の最初の日を返します。 WW 年の最初の日と同じ曜日に対応する、指定された日付の直前の、または同じ曜日と同じ日付の直前の最大の日付を返します IW 指定された日付を含むISO週の開始点を返します。 W 月の最初の日と同じ曜日に対応する指定された日付の直前、または同じ日付と同じ日付の直前の最大の日付を返します。 DDD, DD, J 指定された日付の曜日の開始時刻を返します。 DAY, DY, D 指定された日付を含む曜日(日曜日)の開始点を返します。 HH, HH12, HH24 時間の始まりを返します。 MI 分の開始点を返します。 以下は、 TRUNC 関数の 使用例です 。 次の例では、100年単位に切り捨てます。 SELECT TO_CHAR(TRUNC(TO_DATE('1951','YYYY'),'CC'),'DD-MON-YYYY') "Century" FROM DUAL; Century ------------- 01-JAN-1901 (1 row) 次の例では、年を切り捨てます。 SELECT TO_CHAR(TRUNC(TO_DATE('01-JUL-1999','DD-MON-YYYY'),'Y'),'DD-MON-YYYY') "Year" FROM DUAL; Year ------------- 01-JAN-1999 (1 row) 次の例では、ISO年の先頭に切り捨てます。 SELECT TO_CHAR(TRUNC(TO_DATE('01-JUL-2004','DD-MON-YYYY'),'IYYY'),'DD-MON-YYYY') "ISO Year" FROM DUAL; ISO Year ------------- 29-DEC-2003 (1 row) 次の例では、四半期の開始日を切り捨てます。 SELECT TRUNC(TO_DATE('16-FEB-07','DD-MON-YY'),'Q') "Quarter" FROM DUAL; Quarter -------------------- 01-JAN-07 00:00:00 (1 row) 次の例では、月の先頭に切り捨てられます。 SELECT TRUNC(TO_DATE('16-DEC-07','DD-MON-YY'),'MONTH') "Month" FROM DUAL; Month -------------------- 01-DEC-07 00:00:00 (1 row) 次の例では、年の最初の日に指定された週の開始点まで切り捨てられます。月曜日その直前の1月19日番目の月曜日に2007年の土地の最初の日は、1月15日目です。 SELECT TRUNC(TO_DATE('19-JAN-07','DD-MON-YY'),'WW') "Week" FROM DUAL; Week -------------------- 15-JAN-07 00:00:00 (1 row) 次の例では、ISO週の先頭に切り捨てられます。 ISO週は月曜日から始まります。 2004年1月2日は、2003年12月29日月曜日に始まるISO週に分類されます。 SELECT TRUNC(TO_DATE('02-JAN-04','DD-MON-YY'),'IW') "ISO Week" FROM DUAL; ISO Week -------------------- 29-DEC-03 00:00:00 (1 row) 次の例では、週の開始日を、その月の最初の日と同じ日に開始すると見なされるように切り捨てます。 SELECT TRUNC(TO_DATE('21-MAR-07','DD-MON-YY'),'W') "Week" FROM DUAL; Week -------------------- 15-MAR-07 00:00:00 (1 row) 次の例では、1日の先頭に切り詰められます。 SELECT TRUNC(TO_DATE('04-AUG-07 12:00:00 PM','DD-MON-YY HH:MI:SS AM'),'J') "Day" FROM DUAL; Day -------------------- 04-AUG-07 00:00:00 (1 row) 次の例では、週の先頭(日曜日)に切り捨てられます。 SELECT TRUNC(TO_DATE('09-AUG-07','DD-MON-YY'),'DAY') "Day of Week" FROM DUAL; Day of Week -------------------- 05-AUG-07 00:00:00 (1 row) 次の例は、時間の始まりを切り捨てます。 SELECT TO_CHAR(TRUNC(TO_DATE('09-AUG-07 08:30','DD-MON-YY HH:MI'),'HH'),'DD-MON-YY HH24:MI:SS') "Hour" FROM DUAL; Hour -------------------- 09-AUG-07 08:00:00 (1 row) 次の例は、分に切り詰めます。 SELECT TO_CHAR(TRUNC(TO_DATE('09-AUG-07 08:30:30','DD-MON-YY HH:MI:SS'),'MI'),'DD-MON-YY HH24:MI:SS') "Minute" FROM DUAL; Minute -------------------- 09-AUG-07 08:30:00 (1 row) Advanced Serverに は、現在の日付と時刻に関連する値を返すさまざまな関数が用意されています。これらの関数はすべて、現在のトランザクションの開始時刻に基づいて値を返します。 CURRENT_DATE は、現在のトランザクションの開始時刻に基づいて現在の日付と時刻を返します。値 CURRENT _ DATE トランザクション内で複数回呼び出された場合に変更されることはありません。 SELECT CURRENT_DATE FROM DUAL; date ----------- 06-AUG-07 CURRENT _ TIMESTAMP は、現在の日付と TIMESTAMP 戻します。単一のSQL文から呼び出されると、文内の各オカレンスに対して同じ値が返されます。トランザクション内の複数のステートメントから呼び出された場合、各オカレンスごとに異なる値が返されることがあります。関数から呼び出された場合、呼び出し元のcurrent_timestampが返す値とは異なる値を返すことがあります。 SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP FROM DUAL; current_timestamp | current_timestamp ----------------------------------+---------------------------------- 02-SEP-13 17:52:29.261473 +05:00 | 02-SEP-13 17:52:29.261474 +05:00 LOCALTIMESTAMP はオプションで、精度パラメータを指定することができます。これにより、結果は秒フィールドの小数点以下の桁数に丸められます。精度パラメータがなければ、結果は利用可能な完全精度に渡されます。 SELECT LOCALTIMESTAMP FROM DUAL; timestamp ------------------------ 06-AUG-07 16:11:35.973 (1 row) SELECT LOCALTIMESTAMP(2) FROM DUAL; timestamp ----------------------- 06-AUG-07 16:11:44.58 (1 row) これらの関数は現在のトランザクションの開始時刻を返すので、その値はトランザクション中に変更されません。これは機能と見なされます。つまり、1つのトランザクションに「現在の」時間の一貫した概念を持たせ、同じトランザクション内の複数の変更が同じタイムスタンプを持つようにすることです。他のデータベースシステムでは、これらの値をより頻繁に進めることがあります。 NUMTODSINTERVAL 機能は、第二インターバルユニットを介して日を含む期間に数値を変換します。関数を呼び出すときは、結果セットに含める最小の小数間隔タイプを指定します。有効な間隔タイプは、 DAY 、 HOUR 、 MINUTE 、および SECOND です。 次の例では、数値を曜日と時間を含む時間間隔に変換します。 SELECT numtodsinterval(100, ‘hour’); numtodsinterval --------------- 4 days 04:00:00 (1 row) 次の例では、数値を分と秒を含む時間間隔に変換します。 SELECT numtodsinterval(100, ‘second’); numtodsinterval --------------- 1 min 40 secs (1 row) NUMTOYMINTERVAL 機能は、月の間隔ユニットを通じて年を含む時間間隔の数値を変換します。関数を呼び出すときは、結果セットに含める最小の小数間隔タイプを指定します。有効なインターバルタイプは YEAR と MONTH です。 次の例では、数値を年と月を含む時間間隔に変換します。 SELECT numtoyminterval(100, ‘month’); numtoyminterval --------------- 8 years 4 mons (1 row) 次の例では、数値のみを含む時間間隔に変換します。 SELECT numtoyminterval(100, ‘year’); numtoyminterval --------------- 100 years (1 row) このセクションでは 、シーケンス・オブジェクトを操作するための Advanced Server の機能 について説明し ます。シーケンスオブジェクト(シーケンスジェネレータまたはシーケンスとも呼ばれます)は、 CREATE SEQUENCE コマンドで 作成される特別な単一行テーブルです 。通常、シーケンスオブジェクトは、テーブルの行に固有の識別子を生成するために使用されます。シーケンス関数は、シーケンスオブジェクトから連続したシーケンス値を取得するための簡単でマルチユーザーに安全なメソッドを提供します。 sequence .NEXTVAL sequence .CURRVAL sequence は、 CREATE SEQUENCE コマンドで シーケンスに割り当てられた識別子 です。次に、これらの機能の使用方法について説明します。 NEXTVAL シーケンスオブジェクトを次の値に進め、その値を返します。これは原子的に行われます。複数のセッションが 同時に NEXTVAL 実行 しても、それぞれ異なるシーケンス値を安全に受信します。 CURRVAL 現在のセッションでこのシーケンスに対して NEXTVAL によって最後に取得された値を返します 。 ( このセッションでこのシーケンスに対して NEXTVAL が呼び出されたことがない 場合はエラーが報告 されます)。これはセッションローカル値を返す ため、現在のセッション以降に 他のセッションが NEXTVAL を実行したかどうかを予測できます 。 シーケンスオブジェクトがデフォルトパラメータで作成されている場合、 NEXTVAL 呼び出すと、1で始まる連続した値が返されます。その他の動作は、 CREATE SEQUENCE コマンド。 重要 :同じシーケンスから数値を取得する並行トランザクションのブロッキングを回避するため、 NEXTVAL 操作はロールバックされません。つまり、値がフェッチされると、 後で NEXTVAL 実行したトランザクションが 異常終了 した場合でも、値が使用されたとみなされます 。これは、中断されたトランザクションが 、割り当てられた値のシーケンスに 未使用の 「穴」を 残す可能性があることを意味し ます。 次のセクションでは、 Advanced Serverで 使用可能な SQL 準拠の条件式 について説明し ます 。 SQL CASE 式は、他の言語のif / else文と同様の一般的な条件式です。 CASE WHEN condition THEN result [ WHEN ... ] [ ELSE result ] END CASE 句は、式が有効な場合はいつでも使用できます。 condition は BOOLEAN 結果 を返す式です 。結果が true 場合、 CASE 式の 値は 条件に続く result になります。結果が false あれば、 それ以降の WHEN 句は すべて 同じ方法で検索されます。 WHEN ない場合 condition が true の場合、 CASE 式の 値は ELSE 句の result になり ます。場合は ELSE 句がなく、どの条件とも一致しない、結果は null 。 例: SELECT * FROM test; a --- 1 2 3 (3 rows) SELECT a, CASE WHEN a=1 THEN 'one' WHEN a=2 THEN 'two' ELSE 'other' END FROM test; a | case ---+------- 1 | one 2 | two 3 | other (3 rows) すべての result 式 のデータ型は 、単一の出力型に変換可能でなければなりません。 次の「シンプルな」 CASE 式は、上記の一般的な形式の特殊な変形です。 CASE expression WHEN value THEN result [ WHEN ... ] [ ELSE result ] END expression 計算され、全てと比較される value の指定 WHEN 句は、1つまでが等しくされていることがわかります。一致するものが見つからない場合 は、 ELSE 節の result (またはヌル値)が返されます。 上記の例は、単純な CASE 構文 を使用して記述することができ ます。 SELECT a, CASE a WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'other' END FROM test; a | case ---+------- 1 | one 2 | two 3 | other (3 rows) CASE 式は、結果を決定するために必要されていない任意の部分式を評価しません。たとえば、これはゼロによる除算の失敗を回避するための方法です。 SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END; COALESCE 関数がnullでない自身の最初の引数を返します。すべての引数がnullの場合にのみNullが返されます。 COALESCE( value [, value2 ] ... ) これは、表示またはそれ以上の計算のためにデータを取り出すときに、ヌル値のデフォルト値を代入するためによく使用されます。例えば: SELECT COALESCE(description, short_description, '(none)') ... CASE 式 と同様に 、 COALESCE は結果を判別する必要のない引数を評価しません。つまり、最初のNULL以外の引数の右側の引数は評価されません。この SQL 標準機能は 、他のデータベースシステムで使用されている NVL や IFNULL 似た機能を提供し ます。 NULLIF 場合、関数はNULL値を返し value1 と value2 等しいです。それ以外の場合は、 value1 返します 。 NULLIF( value1 , value2 ) 上記の COALESCE 例 とは逆の操作を行うために使用することができます : SELECT NULLIF(value1, '(none)') ... value1 が(none)の 場合 はnullを返し、そうでない場合は value1 返し ます。 NVL 関数は、NULLでない自身の最初の引数を返します。 NVL は最初の式を評価します。その式が NULL に 評価される場合 、 NVL は2番目の式を返します。 NVL( expr1 , expr2 ) 戻り値の型は引数の型と同じです。すべての引き数は同じデータ型を持たなければなりません(または共通の型に強制可能でなければなりません)。 NVL 返す NULL すべての引数がある場合は NULL 。 次の例は、委託されていない従業員のボーナスを計算します。従業員が委託従業員の場合、この式はemployeesコミッションを返します。従業員が委託従業員でない場合(つまり、コミッションが NULL )、この式は給与の10%のボーナスを返します。 bonus = NVL(emp.commission, emp.salary * .10) NVL2 は式を評価し、最初の式の値に応じて2番目または3番目の式を返します。最初の式が NULL で ない場合 、 NVL2 は expr2 の値を返し expr2 。最初の式が NULL 場合、 NVL2 は expr3 の値を返します 。 NVL2(expr1, expr2, expr3) 戻り値の型は引数の型と同じです。すべての引き数は同じデータ型を持たなければなりません(または共通の型に強制可能でなければなりません)。 次の例では、委託された従業員のボーナスを計算します。特定の従業員が委託従業員の場合、この式は彼のコミッションの110%に相当する金額を返します。従業員が委託従業員でない場合(つまり、コミッションが NULL )、この式は 0 返し 0 。 bonus = NVL2(emp.commission, emp.commission * 1.1, 0) GREATEST と LEAST 関数は、式の任意の数のリストから、最大または最小値を選択します。 GREATEST( value [, value2 ] ... ) LEAST( value [, value2 ] ... ) 式はすべて共通のデータ型に変換可能でなければなりません。これは結果の型になります。リスト内のNULL値は無視されます。すべての式がnullと評価された場合にのみ、結果はNULLになります。 GREATEST と LEAST はSQL標準にはないが、一般的な拡張である ことに注意してください 。 集計 関数は、入力値のセットから単一の結果値を計算します。組み込み集約関数は、次の表にリストされています。 表 2 - 29 汎用汎用集計関数 Function Argument Type Return Type Description AVG( 発現 ) INTEGER, REAL, DOUBLE PRECISION, NUMBER 任意の整数型の場合は NUMBER 、浮動小数点引数の場合は DOUBLE PRECISION 、それ以外の場合は引数のデータ型と同じです。 すべての入力値の平均(算術平均) COUNT(*) BIGINT 入力行の数 COUNT( 式 ) どれか BIGINT expressionの値がnullでない入力行の数 MAX( 式 ) 任意の数値、文字列、日付/時刻、またはバイト型 引数の型と同じ すべての入力値にわたる式の最大値 MIN( 式 ) 任意の数値、文字列、日付/時刻、またはバイト型 引数の型と同じ すべての入力値にわたる式の最小値 SUM( 式 ) INTEGER, REAL, DOUBLE PRECISION, NUMBER BIGINT ため SMALLINT または INTEGER 引数、 NUMBER 用 BIGINT 引数、 DOUBLE PRECISION 浮動小数点引数の場合、引数のデータ型として、さもなければ同じ すべての入力値にわたる式の合計 これらの関数は 、 COUNT を除いて 、行が選択されていない場合にはNULL値を戻す ことに注意してください 。特に、 行がない 場合の SUM は、期待どおりゼロではなくNULLを返します。 COALESCE 機能が必要なときにヌルゼロを代入するために使用することができます。 次の表に、統計分析で一般的に使用される集計関数を示します。 (これらは、より一般的に使用される集約のリストを乱雑にするのを避けるためにのみ分離されています)。記述に N が記述されている 場合は、すべての入力式がNULLでない入力行の数を意味します。すべての場合において、計算が無意味である場合、例えば N がゼロの 場合には、nullが返さ れる。 表 2 - 30 統計に関する集計関数 Function Argument Type Return Type Description CORR( Y , X ) DOUBLE PRECISION DOUBLE PRECISION 相関係数 COVAR_POP( Y , X ) DOUBLE PRECISION DOUBLE PRECISION 母集団の共分散 COVAR_SAMP( Y , X ) DOUBLE PRECISION DOUBLE PRECISION サンプル共分散 REGR_AVGX( Y , X ) DOUBLE PRECISION DOUBLE PRECISION 独立変数の平均値(sum( X )/ N ) REGR_AVGY( Y , X ) DOUBLE PRECISION DOUBLE PRECISION 従属変数の平均(合計( Y )/ N ) REGR_COUNT( Y , X ) DOUBLE PRECISION DOUBLE
精度 両方の式が非NULLである入力行の数 REGR_INTERCEPT( Y , X ) DOUBLE PRECISION DOUBLE PRECISION ( X 、 Y )対 によって決定される最小二乗適合線形方程式のy切片 REGR_R2( Y , X ) DOUBLE PRECISION DOUBLE PRECISION 相関係数の2乗 REGR_SLOPE( Y , X ) DOUBLE PRECISION DOUBLE PRECISION ( X 、 Y )のペアで 決まる最小二乗適合線形方程式の 傾き REGR_SXX( Y , X ) DOUBLE PRECISION DOUBLE PRECISION Sum( X 2 ) - sum( X ) 2 / N (独立変数の「二乗和」) REGR_SXY( Y , X ) DOUBLE PRECISION DOUBLE PRECISION Sum( X * Y ) - sum( X )* sum( Y )/ N (独立した時間依存変数の「積の和」) REGR_SYY( Y , X ) DOUBLE PRECISION DOUBLE PRECISION Sum( Y 2 ) - sum( Y ) 2 / N (従属変数の「平方和」) STDDEV( 式 ) INTEGER, REAL, DOUBLE PRECISION, NUMBER 浮動小数点引数の場合は DOUBLE PRECISION 、そうでない場合は NUMBER STDDEV_SAMP 歴史的な別名 STDDEV_POP( 式 ) INTEGER, REAL, DOUBLE PRECISION, NUMBER 浮動小数点引数の場合は DOUBLE PRECISION 、そうでない場合は NUMBER 入力値の母集団標準偏差 STDDEV_SAMP( 式 ) INTEGER, REAL, DOUBLE PRECISION, NUMBER 浮動小数点引数の場合は DOUBLE PRECISION 、そうでない場合は NUMBER 入力値のサンプル標準偏差 VARIANCE( 式 ) INTEGER, REAL, DOUBLE PRECISION, NUMBER 浮動小数点引数の場合は DOUBLE PRECISION 、そうでない場合は NUMBER 歴史的
VAR_SAMP別名 VAR_POP( 式 ) INTEGER, REAL, DOUBLE PRECISION, NUMBER 浮動小数点引数の場合は DOUBLE PRECISION 、そうでない場合は NUMBER 入力値の母集団分散(母集団標準偏差の2乗) VAR_SAMP( 式 ) INTEGER, REAL, DOUBLE PRECISION, NUMBER 浮動小数点引数の場合は DOUBLE PRECISION 、そうでない場合は NUMBER 入力値のサンプル分散(サンプル標準偏差の2乗) この項では、 Advanced Serverで 使用可能な SQL 準拠の副問合せ式 について説明し ます 。このセクションに記載されているすべての式はブール値( true / false )を 返し ます。 EXISTS の引数 は、任意の SELECT 文またはサブクエリです。副問合せは、行が戻されるかどうかを判断するために評価されます。少なくとも1つの行を戻す場合 は 、 EXISTS の結果 は TRUE ます。副問合せが行を EXISTS ない場合、 EXISTS の結果 は FALSE 。 EXISTS( subquery ) サブクエリは、サブクエリのいずれかの評価中に定数として機能する周囲のクエリの変数を参照できます。 サブクエリは通常、少なくとも1つの行が返されるかどうかを判断するのに十分なだけ実行されます。何らかの副作用(呼び出しシーケンス関数など)を持つ副問い合わせを書くのは賢明ではありません。副作用が発生するか否かは予測するのが難しいかもしれない。 結果は、行が返されるかどうかと、それらの行の内容に依存しないため、サブクエリの出力リストは通常は面白くないためです。一般的なコーディング規則は、すべての EXISTS テストを EXISTS(SELECT 1 WHERE ...) 形式で 記述すること EXISTS(SELECT 1 WHERE ...) 。ただし、 INTERSECT を使用するサブクエリなど、このルールには例外があります 。 この単純な例は、 deptno 内部結合に似 ていますが、一致する emp 行 が複数あるにもかかわらず、 各 dept 行 に対して最大で1つの出力行を生成し ます。 SELECT dname FROM dept WHERE EXISTS (SELECT 1 FROM emp WHERE emp.deptno = dept.deptno); dname ------------ ACCOUNTING RESEARCH SALES (3 rows) 右側は括弧でくくられたサブクエリで、正確に1つの列を返す必要があります。左辺の式が評価され、副問合せ結果の各行と比較されます。 等しいサブクエリー行が見つかると 、 IN の結果 は TRUE ます。 等しい行が見つからない場合(副問合せが行を戻さない特殊な場合を含む)、 結果は FALSE 。 expression IN ( subquery ) 左側の式が得られる場合、その注意 null 全く等しい右側の値と少なくとも一つの右側の行収率がない場合、または null の結果 IN 構築物があろう null ではない、 false 。これは、ヌル値のブール値の組み合わせに対するSQLの通常の規則に従います。 EXISTS と 同様に 、サブクエリが完全に評価されると仮定することは賢明ではありません。 右側は括弧でくくられたサブクエリで、正確に1つの列を返す必要があります。左辺の式が評価され、副問合せ結果の各行と比較されます。 不等な副問い合わせ行だけが見つかった場合(副問い合わせが行を返さない特殊な場合を含む)、 NOT IN の結果 は TRUE になります。 等しい行が見つかると、 結果は FALSE 。 expression NOT IN ( subquery ) 左辺の式が null である場合、または等しい右辺値がなく、少なくとも1つの右辺が null もたらす 場合、 NOT IN 構文の 結果は true ではなく null に なり null 。これは、ヌル値のブール値の組み合わせに対するSQLの通常の規則に従います。 EXISTS と 同様に 、サブクエリが完全に評価されると仮定することは賢明ではありません。 右側は括弧でくくられたサブクエリで、正確に1つの列を返す必要があります。左辺の式が評価され、指定された演算子を使用して副問合せ結果の各行と比較されます。 真の結果が得られれば 、 ANY の結果 は TRUE ます。 真の結果が見つからない場合(サブクエリが行を返さない特殊な場合を含む)、 結果は FALSE 。 expression operator ANY ( subquery ) expression operator SOME ( subquery ) SOME は ANY 同義語です 。 IN は = ANY と等価 です。 成功がなく、少なくとも1つの右辺 がオペレータの結果に対して null を返す場合、 ANY 構文の 結果は false ではなく null に なることに注意してください 。これは、ヌル値のブール値の組み合わせに対するSQLの通常の規則に従います。 EXISTS と 同様に 、サブクエリが完全に評価されると仮定することは賢明ではありません。 右側は括弧でくくられたサブクエリで、正確に1つの列を返す必要があります。ザ
左辺の式が評価され、指定された演算子を使用して副問合せ結果の各行と比較されます。 サブクエリが行を返さない特殊な場合も含めて、すべての行 が TRUE 、 ALLの結果は TRUE になります。 偽の結果が見つかると、 結果は FALSE 。 比較 によってすべての行に対して false が 返さ れ ない場合、 結果は null になり 、少なくとも1つの行に対して null が 返され null 。 expression operator ALL ( subquery ) NOT IN は <> ALL と同等 です。 EXISTS と 同様に 、サブクエリが完全に評価されると仮定することは賢明ではありません。 Oracleカタログ・ビューは、 Oracleデータ・ディクショナリ・ビューと互換性のある方法でデータベース・オブジェクトに関する情報を提供します。 ALL_ALL_TABLES ビューには、現行のユーザーがアクセスできるテーブルに関する情報を提供します。 Name Type Description owner TEXT 表の所有者のユーザー名。 schema_name TEXT 表が属するスキーマの名前。 table_name TEXT テーブルの名前。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 status CHARACTER VARYING (5) 互換性のためにのみ含まれています。常に VALID 設定され ます。 temporary TEXT テーブルが一時的な場合は Y です。 テーブルが永続的な場合は N です。 ALL_CONS_COLUMNS ビューには、現行のユーザーがアクセスできるテーブルの上に置かれた制約に指定された列に関する情報を提供します。 Name Type Description owner TEXT 制約の所有者のユーザー名。 schema_name TEXT 制約が属するスキーマの名前。 constraint_name TEXT 制約の名前。 table_name TEXT 制約が属するテーブルの名前。 column_name TEXT 制約で参照される列の名前。 position SMALLINT オブジェクト定義内の列の位置。 constraint_def TEXT 制約の定義。 ALL_CONSTRAINTS ビューには、現行のユーザーがアクセスできるテーブルの上に置かれた制約についての情報を提供します。 Name Type Description owner TEXT 制約の所有者のユーザー名。 schema_name TEXT 制約が属するスキーマの名前。 constraint_name TEXT 制約の名前。 constraint_type TEXT 制約タイプ。可能な値は次のとおりです。 C - チェック制約 F - 外部キー制約 P - 主キー制約 U - ユニークなキー制約 R - 参照整合性制約 V - ビューの制約 O - 読み取り専用で、ビューに table_name TEXT の名前
制約が属するテーブル search_condition TEXT 検査制約に適用される検索条件。 r_owner TEXT 参照制約によって参照される表の所有者。 r_constraint_name TEXT 参照先テーブルの制約定義の名前。 delete_rule TEXT 参照制約の削除規則。可能な値は次のとおりです。 C - カスケード R - 制限する N - 何もしない deferrable BOOLEAN 制約が遅延可能( T または F )である 場合に指定します 。 deferred BOOLEAN 制約が延期されているかどうかを指定します( T または F )。 index_owner TEXT 索引所有者のユーザー名。 index_name TEXT インデックスの名前。 constraint_def TEXT 制約の定義。 ALL_DB_LINKS ビューには、現行のユーザーがアクセス可能なデータベース・リンクに関する情報を提供します。 Name Type Description owner TEXT データベースリンクの所有者のユーザー名。 db_link TEXT 名前
データベースリンクの type CHARACTER VARYING リモートサーバーの種類。値は REDWOOD または EDB いずれかになります username TEXT ログインしているユーザーのユーザー名。 host TEXT リモートサーバーの名前またはIPアドレス。 ALL_DIRECTORIES ビューには、で作成したすべてのディレクトリについての情報提供 CREATE DIRECTORY コマンドを使用します。 Name Type Description owner CHARACTER VARYING(30) ディレクトリの所有者のユーザー名。 directory_name CHARACTER VARYING(30) ディレクトリに割り当てられたエイリアス名。 directory_path CHARACTER VARYING(4000) ディレクトリへのパス。 ALL_IND_COLUMNS ビューには、現行のユーザーがアクセスできる表の索引に含ま列に関する情報を提供します。 Name Type Description index_owner TEXT インデックスの所有者のユーザー名。 schema_name TEXT 索引が属するスキーマの名前。 index_name TEXT インデックスの名前。 table_owner TEXT テーブル所有者のユーザー名。 table_name TEXT 索引が属する表の名前。 column_name TEXT 列の名前。 column_position SMALLINT インデックス内の列の位置。 column_length SMALLINT 列の長さ(バイト単位)。 char_length NUMERIC 列の長さ(文字数)。 descend CHARACTER(1) 常に Y (降順)に 設定し ます。互換性のためにのみ含まれています。 ALL_INDEXES ビューは、現在のユーザによってアクセスされ得るテーブルのインデックスに関する情報を提供します。 Name Type Description owner TEXT インデックスの所有者のユーザー名。 schema_name TEXT 索引が属するスキーマの名前。 index_name TEXT インデックスの名前。 index_type TEXT 索引タイプは常に BTREE です。互換性のためにのみ含まれています。 table_owner TEXT 索引付けされた表の所有者のユーザー名。 table_name TEXT 索引付けされた表の名前。 table_type TEXT 互換性のためにのみ含まれています。常に TABLE 設定され ます。 uniqueness TEXT インデックスが UNIQUE か NONUNIQUE か を示します 。 compression CHARACTER(1) 常に N (圧縮 されて いない)に 設定され ます。互換性のためにのみ含まれています。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 logging TEXT 常に LOGGING 設定され LOGGING ます。互換性のためにのみ含まれています。 status TEXT 互換性のためにのみ含まれています。常に VALID 設定され ます。 partitioned CHARACTER(3) インデックスが分割されていることを示します。現在、常に NO 設定されてい ます。 temporary CHARACTER(1) 索引が一時表にあることを示します。常に N 設定し ます。互換性のためにのみ含まれています。 secondary CHARACTER(1) 互換性のためにのみ含まれています。常に N 設定されてい ます。 join_index CHARACTER(3) 互換性のためにのみ含まれています。常に NO 設定し ます。 dropped CHARACTER(3) 互換性のためにのみ含まれています。常に NO 設定し ます。 ALL_JOBS ビューには、データベース内に存在するすべてのジョブに関する情報を提供します。 Name Type Description job INTEGER ジョブのID(ジョブID)。 log_user TEXT ジョブを送信したユーザーの名前。 priv_user TEXT log_user 同じ です。互換性のためにのみ含まれています。 schema_user TEXT ジョブを解析するために使用されるスキーマの名前。 last_date TIMESTAMP WITH TIME ZONE このジョブが正常に実行された最後の日付。 last_sec TEXT last_date 同じ last_date 。 this_date TIMESTAMP WITH TIME ZONE ジョブの実行が開始された日付。 this_sec TEXT this_dateと同じ next_date TIMESTAMP WITH TIME ZONE このジョブが実行される次の日付。 next_sec TEXT next_dateと同じです。 total_time INTERVAL このジョブの実行時間(秒単位)。 broken TEXT Yの 場合 、このジョブの実行は試行されません。 Nの 場合 、このジョブは実行を試みます。 interval TEXT ジョブの繰り返し頻度を決定します。 failures BIGINT 最後に正常に実行されてからジョブが完了しなかった回数。 what TEXT ジョブの実行時に実行されるジョブ定義(PL / SQLコード・ブロック)。 nls_env CHARACTER VARYING(4000) 常に NULL です。互換性のためにのみ提供されます。 misc_env BYTEA 常に NULL です。互換性のためにのみ提供されます。 instance NUMERIC 常に 0 です。互換性のためにのみ提供されます。 ALL_OBJECTS ビューには、データベース内に存在するすべてのオブジェクトに関する情報を提供します。 Name Type Description owner TEXT オブジェクトの所有者のユーザー名。 schema_name TEXT オブジェクトが属するスキーマの名前。 object_name TEXT オブジェクトの名前。 object_type TEXT オブジェクトのタイプ - 可能な値は 、 INDEX 、 FUNCTION 、 PACKAGE 、 PACKAGE BODY 、 PROCEDURE 、 SEQUENCE 、 SYNONYM 、 TABLE 、 TRIGGER 、および VIEW です。 status CHARACTER VARYING オブジェクトの状態が有効かどうか。現在、互換性のみに含まれています。常に VALID 設定され ます。 temporary TEXT 一時オブジェクトの場合は Y です。 これが永続オブジェクトの場合は N です。 ALL_PART_KEY_COLUMNS ビューは、データベースに存在するパーティション表のキー列に関する情報を提供します。 Name Type Description owner TEXT テーブルの所有者。 schema_name TEXT 表が存在するスキーマの名前。 name TEXT 列が存在する表の名前。 object_type CHARACTER(5) 互換性のためのみ。常に TABLE 。 column_name TEXT キーが定義されている列の名前。 column_position INTEGER 1 最初の列に対して、 2 列目は2など ALL_PART_TABLES ビューは、データベースに存在するパーティション表のすべてについて情報を提供します。 Name Type Description owner TEXT パーティション表の所有者。 schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT テーブルの名前。 partitioning_type TEXT テーブルパーティションを定義するために使用されるパーティションタイプ。 subpartitioning_type TEXT 表のサブパーティションを定義するために使用されるサブパーティション化タイプ。 partition_count BIGINT テーブル内のパーティションの数。 def_subpartition_count INTEGER 表内のサブパーティションの数。 partitioning_key_count INTEGER 指定された区分キーの数。 subpartitioning_key_count INTEGER 指定されたサブパーティション化キーの数 status CHARACTER VARYING(8) 互換性のためにのみ提供されます。常に VALID です。 def_tablespace_name CHARACTER VARYING(30) 互換性のためにのみ提供されます。常に NULL です。 def_pct_free NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_pct_used NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_ini_trans NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_max_trans NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_initial_extent CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_next_extent CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_min_extents CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_max_extents CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_pct_increase CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_freelists NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_freelist_groups NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_logging CHARACTER VARYING(7) 互換性のためにのみ提供されます。常に YES 。 def_compression CHARACTER VARYING(8) 互換性のためにのみ提供されます。常に NONE def_buffer_pool CHARACTER VARYING(7) 互換性のためにのみ提供されます。常に DEFAULT ref_ptn_constraint_name CHARACTER VARYING(30) 互換性のためにのみ提供されます。常に NULL interval CHARACTER VARYING(1000) 互換性のためにのみ提供されます。常に NULL ALL_POLICIES ビューは、データベース内のすべてのポリシーに関する情報を提供します。このビューは、スーパーユーザーのみがアクセスできます。 Name Type Description object_owner TEXT オブジェクトの所有者の名前。 schema_name TEXT オブジェクトが属するスキーマの名前。 object_name TEXT ポリシーが適用されるオブジェクトの名前。 policy_group TEXT 互換性のためにのみ含まれています。常に空文字列に設定されます。 policy_name TEXT ポリシーの名前。 pf_owner TEXT ポリシー関数を含むスキーマの名前、またはポリシー関数を含むパッケージを含むスキーマ。 package TEXT ポリシー関数を含むパッケージの名前(関数がパッケージに属している場合)。 function TEXT ポリシー関数の名前。 sel TEXT ポリシーが SELECT コマンドに 適用されるかどうか 。可能な値は YES または NO です。 ins TEXT ポリシーが INSERT コマンドに 適用されるかどうか 。可能な値は YES または NO です。 upd TEXT ポリシーが UPDATE コマンドに 適用されるかどうか 。可能な値は YES または NO です。 del TEXT ポリシーが DELETE コマンドに 適用されるかどうか 。可能な値は YES または NO です。 idx TEXT インデックス保守にポリシーが適用されるかどうか。可能な値は YES または NO です。 chk_option TEXT INSERT および UPDATE コマンド でチェックオプションが有効であるかどうか 。可能な値は YES または NO です。 enable TEXT オブジェクトに対してポリシーが有効かどうか。可能な値は YES または NO です。 static_policy TEXT 互換性のためにのみ含まれています。常に NO 設定し ます。 policy_type TEXT 含まれる
互換性のためにのみ;常にUNKNOWN設定されています。 long_predicate TEXT 互換性のためにのみ含まれています。常に YES 設定し ます。 ALL_QUEUES ビューには、現在定義されたキューについての情報を提供します。 Name Type Description owner TEXT キュー所有者のユーザー名。 name TEXT キューの名前。 queue_table TEXT キューが存在するキュー表の名前。 qid OID キューのシステム割り当てオブジェクトID。 queue_type CHARACTER VARYING キュータイプ。であってもよい EXCEPTION _ QUEUE 、 NON _ PERSISTENT _ QUEUE 、または NORMAL _ QUEUE 。 max_retries NUMERIC デキュー試行の最大回数。 retrydelay NUMERIC 再試行と再試行の間に許可される最大時間。 enqueue_enabled CHARACTER VARYING キューがエンキューを許可する場合はYESです。キューにない場合はNO。 dequeue_enabled CHARACTER VARYING キューがデキューを許可する場合はYES。キューにない場合はNO。 retention CHARACTER VARYING 処理されたメッセージがキューに保持される秒数。 user_comment CHARACTER VARYING ユーザー指定のコメント。 network_name キャラクター バリエーション キューが存在するネットワークの名前。 sharded キャラクター バリエーション キューがシャードされたネットワーク上にある場合は YES です。 キューにない場合は NO 。 ALL_QUEUE_TABLES ビューは、データベース内のキュー表のすべての情報を提供します。 Name Type Description owner TEXT キュー表の所有者の役割名。 queue_table TEXT ユーザーが指定したキュー表の名前。 type CHARACTER VARYING キュー表に保管されるデータのタイプ。 object_type TEXT ユーザ定義のペイロードタイプ。 sort_order CHARACTER VARYING キュー表がソートされる順序。 recipients CHARACTER VARYING 常に SINGLE 。 message_grouping CHARACTER VARYING 常に NONE です。 compatible CHARACTER VARYING このキュー表が互換性のあるAdvanced Serverリリースのリリース番号。 primary_instance NUMERIC 常に 0 です。 secondary_instance NUMERIC 常に 0 です。 owner_instance NUMERIC キュー表を所有するインスタンスのインスタンス番号。 user_comment キャラクター バリエーション 表が作成されたときに提供されたユーザーのコメント。 secure キャラクター バリエーション YES は、キュー表が安全であることを示します。 NO は、そうでないことを示します。 ALL_SEQUENCES ビューは、すべてのユーザ定義のユーザが持っている上に配列に関する情報提供 select 、又は update 権限。 Name Type Description sequence_owner TEXT シーケンスの所有者のユーザー名。 schema_name TEXT シーケンスが存在するスキーマの名前。 sequence_name TEXT シーケンスの名前。 min_value NUMERIC サーバーがシーケンスに割り当てる最小値。 max_value NUMERIC サーバーがシーケンスに割り当てる最高値。 increment_by NUMERIC 現在のシーケンス番号に加算された値。次のシーケンス番号が作成されます。 cycle_flag CHARACTER VARYING min_value または max_value. に達したときにシーケンスをラップするかどうかを指定し max_value. order_flag CHARACTER VARYING 常に Y を返し ます。 cache_size NUMERIC メモリに格納されている事前に割り当てられたシーケンス番号の数。 last_number NUMERIC ディスクに保存された最後のシーケンス番号の値。 ALL_SOURCE 関数、プロシージャ、トリガ、パッケージの仕様、およびパッケージ本体:ビューには、次のプログラムタイプのソースコードのリストを提供します。 Name Type Description owner TEXT プログラムの所有者のユーザー名。 schema_name TEXT プログラムが属するスキーマの名前。 name TEXT プログラムの名前。 type TEXT プログラムのタイプ - 可能な値は 、 FUNCTION 、 PACKAGE 、 PACKAGE BODY 、 PROCEDURE 、および TRIGGER です。 line INTEGER 与えられたプログラムに対するソースコードの行番号。 text TEXT ソースコードの行。 ALL_SUBPART_KEY_COLUMNS ビューは、データベースに存在するサブパーティション化されているそれらの分割されたテーブルのキー列に関する情報を提供します。 Name Type Description owner TEXT テーブルの所有者。 schema_name TEXT 表が存在するスキーマの名前。 name TEXT 列が存在する表の名前。 object_type CHARACTER(5) 互換性のためのみ。常に TABLE 。 column_name TEXT キーが定義されている列の名前。 column_position INTEGER 1 最初の列に対して、 2 列目は2など ALL_SYNONYMS ビューは、現在のユーザによって参照されるすべての同義語に関する情報を提供します。 Name Type Description owner TEXT シノニムの所有者のユーザー名。 schema_name TEXT シノニムが存在するスキーマの名前。 synonym_name TEXT 同義語の名前。 table_owner TEXT オブジェクトの所有者のユーザー名。 table_schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT シノニムが参照するオブジェクトの名前。 db_link TEXT 関連するデータベースリンクの名前。 ALL_TAB_COLUMNS ビューは、すべてのユーザー定義テーブルおよびビューのすべての列についての情報を提供します。 Name Type Description owner CHARACTER VARYING 列が存在する表またはビューの所有者のユーザー名。 schema_name CHARACTER VARYING 表またはビューが存在するスキーマの名前。 table_name CHARACTER VARYING 表またはビューの名前。 column_name CHARACTER VARYING 列の名前。 data_type CHARACTER VARYING 列のデータ型。 data_length NUMERIC テキスト列の長さ。 data_precision NUMERIC NUMBER 列の 精度(桁数) data_scale NUMERIC NUMBER 列の スケール 。 nullable CHARACTER(1) 列がNULL可能かどうか。可能な値は次のとおりです。 column_id NUMERIC 表またはビュー内の列の相対位置。 data_default CHARACTER VARYING 列に割り当てられたデフォルト値。 ALL_TAB_PARTITIONS ビューは、データベース内に存在するすべてのパーティションに関する情報を提供します。 Name Type Description table_owner TEXT パーティションが存在するテーブルの所有者。 schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT テーブルの名前。 composite TEXT 表がサブパーティション化されている場合は YES です。 表がサブパーティション化されていない場合は、 NO 。 partition_name TEXT パーティションの名前。 subpartition_count BIGINT パーティション内のサブパーティションの数。 high_value TEXT CREATE TABLE ステートメントで 指定された高位区分値 。 high_value_length INTEGER パーティショニング値の長さ。 partition_position INTEGER 1 最初のパーティションのために、 2 番目のパーティションの場合など tablespace_name TEXT パーティションが存在する表領域の名前。 pct_free NUMERIC 互換性のためにのみ含まれています。常に 0 pct_used NUMERIC 互換性のためにのみ含まれています。常に 0 ini_trans NUMERIC 互換性のためにのみ含まれています。常に 0 max_trans NUMERIC 互換性のためにのみ含まれています。常に 0 initial_extent NUMERIC 互換性のためにのみ含まれています。常に NULL next_extent NUMERIC 互換性のためにのみ含まれています。常に NULL min_extent NUMERIC 互換性のためにのみ含まれています。常に 0 max_extent NUMERIC 互換性のためにのみ含まれています。常に 0 pct_increase NUMERIC 互換性のためにのみ含まれています。常に 0 freelists NUMERIC 互換性のためにのみ含まれています。常に NULL freelist_groups NUMERIC 互換性のためにのみ含まれています。常に NULL logging CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に YES compression CHARACTER VARYING(8) 互換性のためにのみ含まれています。常に NONE num_rows NUMERIC pg_class.reltuples 同じ です。 blocks INTEGER pg_class.relpages. 同じ pg_class.relpages. empty_blocks NUMERIC 互換性のためにのみ含まれています。常に NULL avg_space NUMERIC 互換性のためにのみ含まれています。常に NULL chain_cnt NUMERIC 互換性のためにのみ含まれています。常に NULL avg_row_len NUMERIC 互換性のためにのみ含まれています。常に NULL sample_size NUMERIC 互換性のためにのみ含まれています。常に NULL last_analyzed TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。常に NULL buffer_pool CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に NULL global_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に YES user_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に NO backing_table REGCLASS パーティションバッキングテーブルの名前。 ALL_TAB_SUBPARTITIONS ビューは、データベース内に存在するサブパーティションのすべての情報を提供します。 Name Type Description table_owner TEXT サブパーティションが存在する表の所有者。 schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT テーブルの名前。 partition_name TEXT パーティションの名前。 subpartition_name TEXT サブパーティションの名前。 high_value TEXT CREATE TABLE ステートメントで 指定された高いサブパーティション化値 。 high_value_length INTEGER サブパーティション化値の長さ。 subpartition_position INTEGER 1 最初のサブパーティションのための、 2 番目のサブパーティションの場合など tablespace_name TEXT サブパーティションが存在する表領域の名前。 pct_free NUMERIC 互換性のためにのみ含まれています。常に 0 pct_used NUMERIC 互換性のためにのみ含まれています。常に 0 ini_trans NUMERIC 互換性のためにのみ含まれています。常に 0 max_trans NUMERIC 互換性のためにのみ含まれています。常に 0 initial_extent NUMERIC 互換性のためにのみ含まれています。常に NULL next_extent NUMERIC 互換性のためにのみ含まれています。常に NULL min_extent NUMERIC 互換性のためにのみ含まれています。常に 0 max_extent NUMERIC 互換性のためにのみ含まれています。常に 0 pct_increase NUMERIC 互換性のためにのみ含まれています。常に 0 freelists NUMERIC 互換性のためにのみ含まれています。常に NULL freelist_groups NUMERIC 互換性のためにのみ含まれています。常に NULL logging CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に YES compression CHARACTER VARYING(8) 互換性のためにのみ含まれています。常に NONE num_rows NUMERIC pg_class.reltuples 同じ です。 blocks INTEGER pg_class.relpages. 同じ pg_class.relpages. empty_blocks NUMERIC 互換性のためにのみ含まれています。常に NULL avg_space NUMERIC 互換性のためにのみ含まれています。常に NULL chain_cnt NUMERIC 互換性のためにのみ含まれています。常に NULL avg_row_len NUMERIC 互換性のためにのみ含まれています。常に NULL sample_size NUMERIC 互換性のためにのみ含まれています。常に NULL last_analyzed TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。常に NULL buffer_pool CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に NULL global_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に YES user_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に NO backing_table REGCLASS サブパーティションのバッキングテーブルの名前。 ALL_TABLES ビューには、すべてのユーザー定義テーブルの情報を提供します。 Name Type Description owner TEXT 表の所有者のユーザー名。 schema_name TEXT 表が属するスキーマの名前。 table_name TEXT テーブルの名前。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 status CHARACTER VARYING(5) 表の状態が有効かどうか。現在、互換性のみに含まれています。常に VALID 設定され ます。 temporary CHARACTER(1) これが一時テーブルの場合は Y です。 これが一時テーブルでない場合は N です。 ALL_TRIGGERS ビューは、現在のユーザによってアクセスされ得るテーブルのトリガに関する情報を提供します。 Name Type Description owner TEXT トリガーの所有者のユーザー名。 schema_name TEXT トリガーが存在するスキーマの名前。 trigger_name TEXT トリガーの名前。 trigger_type TEXT トリガーのタイプ。可能な値は次のとおりです。 BEFORE ROW BEFORE STATEMENT AFTER ROW AFTER
ステートメント triggering_event TEXT トリガーを発生させるイベント。 table_owner TEXT トリガーが定義されているテーブルの所有者のユーザー名。 base_object_type TEXT 互換性のためにのみ含まれています。値は常に TABLE ます。 table_name TEXT トリガーが定義されているテーブルの名前。 referencing_name TEXT 互換性のためにのみ含まれています。価値はいつも REFERENCING NEW AS NEW OLD AS OLD ます。 status TEXT ステータスは、トリガーが有効( VALID )か無効( NOTVALID ) かを示します 。 description TEXT 互換性のためにのみ含まれています。 trigger_body TEXT トリガーの本体。 action_statement TEXT トリガーが起動したときに実行されるSQLコマンド。 ALL_TYPES ビューには、現在のユーザーが使用できるオブジェクトの種類についての情報を提供します。 Name Type Description owner TEXT オブジェクト型の所有者。 schema_name TEXT 型が定義されているスキーマの名前。 type_name TEXT 型の名前。 type_oid OID 型のオブジェクト識別子(OID)。 typecode TEXT 型の型コードです。可能な値は次のとおりです。 OBJECT COLLECTION OTHER attributes INTEGER 型の属性の数。 ALL_USERS ビューには、すべてのユーザー名に関する情報を提供します。 Name Type Description username TEXT ユーザーの名前。 user_id OID ユーザーに割り当てられている数値ユーザーID。 created TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。常に NULL です。 ALL_VIEW_COLUMNS ビューには、すべてのユーザー定義のビューのすべての列に関する情報を提供します。 Name Type Description owner CHARACTER VARYING ビューの所有者のユーザー名。 schema_name CHARACTER VARYING ビューが属するスキーマの名前。 view_name CHARACTER VARYING ビューの名前。 column_name CHARACTER VARYING 列の名前。 data_type CHARACTER VARYING 列のデータ型。 data_length NUMERIC テキスト列の長さ。 data_precision NUMERIC NUMBER 列の 精度(桁数) data_scale NUMERIC NUMBER 列の スケール 。 nullable CHARACTER(1) 列がNULL可能であるか否か-可能な値は: Y -列がNULL可能です。 N - 列はnullを許可しません。 column_id NUMERIC ビュー内の列の相対位置。 data_default CHARACTER VARYING 列に割り当てられたデフォルト値。 ALL_VIEWS ビューには、すべてのユーザー定義のビューについての情報を提供します。 Name Type Description owner TEXT ユーザー名
ビューの所有者の schema_name TEXT ビューが属するスキーマの名前。 view_name TEXT ビューの名前。 text TEXT SELECT ビューを定義する声明。 DBA_ALL_TABLES ビューは、データベース内のすべてのテーブルに関する情報を提供します。 Name Type Description owner TEXT 表の所有者のユーザー名。 schema_name TEXT 表が属するスキーマの名前。 table_name TEXT テーブルの名前。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 status CHARACTER VARYING(5) 互換性のためにのみ含まれています。常に VALID 設定され ます。 temporary TEXT テーブルが一時的な場合は Y です。 テーブルが永続的な場合は N です。 DBA_CONS_COLUMNS ビューは、データベース内のすべてのテーブルの上で指定されている制約に含まれているすべての列に関する情報を提供します。 Name Type Description owner TEXT 制約の所有者のユーザー名。 schema_name TEXT 制約が属するスキーマの名前。 constraint_name TEXT 制約の名前。 table_name TEXT 制約が属するテーブルの名前。 column_name TEXT 制約で参照される列の名前。 position SMALLINT オブジェクト定義内の列の位置。 constraint_def TEXT 制約の定義。 DBA_CONSTRAINTS ビューは、データベース内のテーブル上のすべての制約についての情報を提供します。 Name Type Description owner TEXT 制約の所有者のユーザー名。 schema_name TEXT 制約が属するスキーマの名前。 constraint_name TEXT 制約の名前。 constraint_type TEXT 制約タイプ。可能な値は次のとおりです。 C - チェック制約 F - 外部キー制約 P - 主キー制約 U - ユニークなキー制約 R - 参照整合性制約 V - ビューの制約 O - 読み取り専用で、ビューに table_name TEXT 制約が属するテーブルの名前。 search_condition TEXT 検査制約に適用される検索条件。 r_owner TEXT 参照制約によって参照される表の所有者。 r_constraint_name TEXT 参照先テーブルの制約定義の名前。 delete_rule TEXT 参照制約の削除規則。可能な値は次のとおりです。 C - カスケード R - 制限する N - 何もしない deferrable BOOLEAN 制約が遅延可能( T または F )である 場合に指定します 。 deferred BOOLEAN 制約が延期されているかどうかを指定します( T または F )。 index_owner TEXT 索引所有者のユーザー名。 index_name TEXT インデックスの名前。 constraint_def TEXT 制約の定義。 DBA_DB_LINKS ビューは、データベース内のすべてのデータベース・リンクに関する情報を提供します。 Name Type Description owner TEXT データベースリンクの所有者のユーザー名。 db_link TEXT データベースリンクの名前。 type CHARACTER VARYING リモートサーバーの種類。値は REDWOOD または EDB いずれかになります username TEXT ログインしているユーザーのユーザー名。 host TEXT リモートサーバーの名前またはIPアドレス。 DBA_DIRECTORIES ビューには、で作成したすべてのディレクトリについての情報提供 CREATE DIRECTORY コマンドを使用します。 Name Type Description owner CHARACTER VARYING(30) ディレクトリの所有者のユーザー名。 directory_name CHARACTER VARYING(30) ディレクトリに割り当てられたエイリアス名。 directory_path CHARACTER VARYING(4000) ディレクトリへのパス。 DBA_IND_COLUMNS ビューは、データベース内のすべてのテーブルの上に、インデックスに含まれるすべての列に関する情報を提供します。 Name Type Description index_owner TEXT インデックスの所有者のユーザー名。 schema_name TEXT 索引が属するスキーマの名前。 index_name TEXT インデックスの名前。 table_owner TEXT 表の所有者のユーザー名。 table_name TEXT 索引が属する表の名前。 column_name TEXT オブジェクト列の列または属性の名前。 column_position SMALLINT インデックス内の列の位置。 column_length SMALLINT 列の長さ(バイト単位)。 char_length NUMERIC 列の長さ(文字数)。 descend CHARACTER(1) 常に Y (降順)に 設定し ます。互換性のためにのみ含まれています。 DBA_INDEXES ビューは、データベース内のすべてのインデックスについての情報を提供しています。 Name Type Description owner TEXT インデックスの所有者のユーザー名。 schema_name TEXT 索引が存在するスキーマの名前。 index_name TEXT インデックスの名前。 index_type TEXT 索引タイプは常に BTREE です。互換性のためにのみ含まれています。 table_owner TEXT 索引付けされた表の所有者のユーザー名。 table_name TEXT 索引付けされた表の名前。 table_type TEXT 互換性のためにのみ含まれています。常に TABLE 設定され ます。 uniqueness TEXT インデックスが UNIQUE か NONUNIQUE か を示します 。 compression CHARACTER(1) 常に N (圧縮 されて いない)に 設定され ます。互換性のためにのみ含まれています。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 logging TEXT 互換性のためにのみ含まれています。常に LOGGING 設定され LOGGING ます。 status TEXT オブジェクトの状態が有効かどうか。 ( VALID または INVALID )。 partitioned CHARACTER(3) インデックスが分割されていることを示します。常に NO 設定し ます。 temporary CHARACTER(1) 索引が一時表にあることを示します。常に N 設定されてい ます。 secondary CHARACTER(1) 含まれる
互換性のためにのみ。常にN設定されています。 join_index CHARACTER(3) 互換性のためにのみ含まれています。常に NO 設定し ます。 dropped CHARACTER(3) 互換性のためにのみ含まれています。常に NO 設定し ます。 DBA_JOBS ビューは、データベース内のすべてのジョブについての情報を提供します。 Name Type Description job INTEGER ジョブのID(ジョブID)。 log_user TEXT ジョブを送信したユーザーの名前。 priv_user TEXT log_user 同じ です。互換性のためにのみ含まれています。 schema_user TEXT ジョブを解析するために使用されるスキーマの名前。 last_date TIMESTAMP WITH TIME ZONE このジョブが正常に実行された最後の日付。 last_sec TEXT last_date 同じ last_date 。 this_date TIMESTAMP WITH TIME ZONE ジョブの実行が開始された日付。 this_sec TEXT this_dateと同じ next_date TIMESTAMP WITH TIME ZONE このジョブが実行される次の日付。 next_sec TEXT next_dateと同じです。 total_time INTERVAL このジョブの実行時間(秒単位)。 broken TEXT Yの 場合 、このジョブの実行は試行されません。 Nの 場合 、このジョブは実行を試みます。 interval TEXT ジョブの繰り返し頻度を決定します。 failures BIGINT 最後に正常に実行されてからジョブが完了しなかった回数。 what TEXT ジョブの実行時に実行されるジョブ定義(PL / SQLコード・ブロック)。 nls_env CHARACTER VARYING(4000) 常に NULL です。互換性のためにのみ提供されます。 misc_env BYTEA 常に NULL です。互換性のためにのみ提供されます。 instance NUMERIC 常に 0 です。互換性のためにのみ提供されます。 DBA_OBJECTS ビューは、データベース内のすべてのオブジェクトに関する情報を提供します。 Name Type Description owner TEXT オブジェクトの所有者のユーザー名。 schema_name TEXT オブジェクトが属するスキーマの名前。 object_name TEXT オブジェクトの名前。 object_type TEXT タイプ
オブジェクトの可能な値は、 INDEX 、 FUNCTION 、 PACKAGE 、 PACKAGE BODY 、 PROCEDURE 、 SEQUENCE 、 SYNONYM 、 TABLE 、 TRIGGER 、および VIEW です。 status CHARACTER VARYING 互換性のためにのみ含まれています。常に VALID 設定され ます。 temporary TEXT テーブルが一時的な場合は Y です。 テーブルが永続的な場合は N です。 DBA_PART_KEY_COLUMNS ビューは、データベースに存在するパーティション表のキー列に関する情報を提供します。 Name Type Description owner TEXT テーブルの所有者。 schema_name TEXT 表が存在するスキーマの名前。 name TEXT 列が存在する表の名前。 object_type CHARACTER(5) 互換性のためのみ。常に TABLE 。 column_name TEXT キーが定義されている列の名前。 column_position INTEGER 1 最初の列に対して、 2 列目は2など DBA_PART_TABLES ビューは、データベース内のパーティション表のすべての情報を提供します。 Name Type Description owner TEXT パーティション表の所有者。 schema_name TEXT 表が存在するスキーマ。 table_name TEXT テーブルの名前。 partitioning_type TEXT テーブルパーティションを定義するために使用される型。 subpartitioning_type TEXT 表のサブパーティションを定義するために使用されるサブパーティション化タイプ。 partition_count BIGINT テーブル内のパーティションの数。 def_subpartition_count INTEGER 表内のサブパーティションの数。 partitioning_key_count INTEGER 指定された区分キーの数。 subpartitioning_key_count INTEGER 指定されたサブパーティション化キーの数 status CHARACTER VARYING(8) 互換性のためにのみ提供されます。常に VALID です。 def_tablespace_name CHARACTER VARYING(30) 互換性のためにのみ提供されます。常に NULL です。 def_pct_free NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_pct_used NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_ini_trans NUMERIC 互換性のためにのみ提供されます。常に NULL 。 def_max_trans NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_initial_extent CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_next_extent CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_min_extents CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_max_extents CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_pct_increase CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_freelists NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_freelist_groups NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_logging CHARACTER VARYING(7) 互換性のためにのみ提供されます。常に YES 。 def_compression CHARACTER VARYING(8) 互換性のためにのみ提供されます。常に NONE def_buffer_pool CHARACTER VARYING(7) 互換性のためにのみ提供されます。常に DEFAULT ref_ptn_constraint_name CHARACTER VARYING(30) 互換性のためにのみ提供されます。常に NULL interval CHARACTER VARYING(1000) 互換性のためにのみ提供されます。常に NULL DBA_POLICIES ビューは、データベース内のすべてのポリシーに関する情報を提供します。このビューは、スーパーユーザーのみがアクセスできます。 Name Type Description object_owner TEXT オブジェクトの所有者の名前。 schema_name TEXT オブジェクトが存在するスキーマの名前。 object_name TEXT ポリシーが適用されるオブジェクトの名前。 policy_group TEXT ポリシーグループの名前。互換性のためにのみ含まれています。常に空文字列に設定されます。 policy_name TEXT ポリシーの名前。 pf_owner TEXT ポリシー関数を含むスキーマの名前、またはポリシー関数を含むパッケージを含むスキーマ。 package TEXT ポリシー関数を含むパッケージの名前(関数がパッケージに属している場合)。 function TEXT ポリシー関数の名前。 sel TEXT ポリシーが SELECT コマンドに 適用されるかどうか 。可能な値は YES または NO です。 ins TEXT ポリシーが INSERT コマンドに 適用されるかどうか 。可能な値は YES または NO です。 upd TEXT ポリシーが UPDATE コマンドに 適用されるかどうか 。可能な値は YES または NO です。 del TEXT ポリシーが DELETE コマンドに 適用されるかどうか 。可能な値は YES または NO です。 idx TEXT かどうか
このポリシーはインデックスメンテナンスには適用されません。可能な値はYES または NO です。 chk_option TEXT INSERT および UPDATE コマンド でチェックオプションが有効であるかどうか 。可能な値は YES または NO です。 Enable TEXT オブジェクトに対してポリシーが有効かどうか。可能な値は YES または NO です。 static_policy TEXT 互換性のためにのみ含まれています。常に NO 設定し ます。 policy_type TEXT 互換性のためにのみ含まれています。常に UNKNOWN 設定されてい ます。 long_predicate TEXT 互換性のためにのみ含まれています。常に YES 設定し ます。 DBA_PROFILES ビューは、既存のプロファイルについての情報を提供します。表には、各プロファイル/リソースの組み合わせの行が含まれています。 Name Type Description profile CHARACTER VARYING(128) プロファイルの名前。 resource_name CHARACTER VARYING(32) プロファイルに関連付けられているリソースの名前。 resource_type CHARACTER VARYING(8) プロファイルによって管理されるリソースのタイプ。 サポートされているすべてのリソースについては 現在 PASSWORD です。 limit CHARACTER VARYING(128) リソースの制限値。 common CHARACTER VARYING(3) ユーザーが作成したプロファイルの場合は YES です。 システム定義のプロファイルでは NO です。 DBA_QUEUES ビューには、現在定義されたキューについての情報を提供します。 Name Type Description owner TEXT キュー所有者のユーザー名。 name TEXT キューの名前。 queue_table TEXT キューが存在するキュー表の名前。 qid OID キューのシステム割り当てオブジェクトID。 queue_type CHARACTER VARYING キュータイプ。であってもよい EXCEPTION _ QUEUE 、 NON _ PERSISTENT _ QUEUE 、または NORMAL _ QUEUE 。 max_retries NUMERIC デキュー試行の最大回数。 retrydelay NUMERIC 再試行と再試行の間に許可される最大時間。 enqueue_enabled CHARACTER VARYING キューがエンキューを許可する場合は YES です。 キューにない場合は NO 。 dequeue_enabled CHARACTER VARYING キューがデキューを許可する場合は YES 。 キューにない場合は NO 。 retention CHARACTER VARYING 処理されたメッセージがキューに保持される秒数。 user_comment CHARACTER VARYING ユーザー指定のコメント。 network_name キャラクター バリエーション キューが存在するネットワークの名前。 sharded キャラクター バリエーション キューがシャードされたネットワーク上にある場合は YES です。 キューにない場合は NO 。 DBA_QUEUE_TABLES ビューは、データベース内のキュー表のすべての情報を提供します。 Name Type Description owner TEXT キュー表の所有者の役割名。 queue_table TEXT ユーザーが指定したキュー表の名前。 type CHARACTER VARYING キュー表に保管されるデータのタイプ。 object_type TEXT ユーザ定義のペイロードタイプ。 sort_order CHARACTER VARYING キュー表がソートされる順序。 recipients CHARACTER VARYING 常に SINGLE 。 message_grouping CHARACTER VARYING 常に NONE です。 compatible CHARACTER VARYING このキュー表が互換性のあるAdvanced Serverリリースのリリース番号。 primary_instance NUMERIC 常に 0 です。 secondary_instance NUMERIC 常に 0 です。 owner_instance NUMERIC キュー表を所有するインスタンスのインスタンス番号。 user_comment キャラクター バリエーション 表が作成されたときに提供されたユーザーのコメント。 secure キャラクター バリエーション YES は、キュー表が安全であることを示します。 NO は、そうでないことを示します。 DBA_ROLE_PRIVS ビューは、ユーザーに付与されているすべての役割についての情報を提供します。ユーザが付与されたロールごとに行が作成されます。 Name Type Description grantee TEXT 役割が付与されたユーザー名。 granted_role TEXT 権限受領者に付与されたロールの名前。 admin_option TEXT 役割がadminオプションで許可されている場合は YES 、 それ以外の場合 は NO 。 default_role TEXT 権限受領者がセッションを作成するときにロールが使用可能になっている場合は YES です。 DBA_ROLES 眺めはですべての役割についての情報を提供して NOLOGIN 属性(グループ)。 Name Type Description role TEXT NOLOGIN 属性 を持つロールの名前、 つまりグループ。 password_required TEXT 互換性のためにのみ含まれています。常に N 。 DBA_SEQUENCES ビューには、すべてのユーザー定義のシーケンスについての情報を提供します。 Name Type Description sequence_owner TEXT シーケンスの所有者のユーザー名。 schema_name TEXT シーケンスが存在するスキーマの名前。 sequence_name TEXT シーケンスの名前。 min_value NUMERIC サーバーがシーケンスに割り当てる最小値。 max_value NUMERIC サーバーがシーケンスに割り当てる最高値。 increment_by NUMERIC 現在のシーケンス番号に加算された値。次のシーケンス番号が作成されます。 cycle_flag CHARACTER VARYING min_value または max_value. に達したときにシーケンスをラップするかどうかを指定し max_value. order_flag CHARACTER VARYING 常に Y を返し ます。 cache_size NUMERIC メモリに格納されている事前に割り当てられたシーケンス番号の数。 last_number NUMERIC ディスクに保存された最後のシーケンス番号の値。 DBA_SOURCE ビューは、データベース内のすべてのオブジェクトのソースコードリストを提供します。 Name Type Description owner TEXT プログラムの所有者のユーザー名。 schema_name TEXT プログラムが属するスキーマの名前。 name TEXT プログラムの名前。 type TEXT プログラムのタイプ - 可能な値は 、 FUNCTION 、 PACKAGE 、 PACKAGE BODY 、 PROCEDURE 、および TRIGGER です。 line INTEGER 与えられたプログラムに対するソースコードの行番号。 text TEXT ソースコードの行。 DBA_SUBPART_KEY_COLUMNS ビューは、データベースに存在するサブパーティション化されているそれらの分割されたテーブルのキー列に関する情報を提供します。 Name Type Description owner TEXT テーブルの所有者。 schema_name TEXT 表が存在するスキーマの名前。 name TEXT 列が存在する表の名前。 object_type CHARACTER(5) 互換性のためのみ。常に TABLE 。 column_name TEXT キーが定義されている列の名前。 column_position INTEGER 1 最初の列に対して、 2 列目は2など DBA_SYNONYM ビューは、データベース内のすべての同義語に関する情報を提供します。 Name Type Description owner TEXT シノニムの所有者のユーザー名。 schema_name TEXT シノニムが属するスキーマの名前。 synonym_name TEXT 同義語の名前。 table_owner TEXT シノニムが定義されている表の所有者のユーザー名。 table_schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT シノニムが定義されている表の名前。 db_link TEXT 関連するデータベースリンクの名前。 DBA_TAB_COLUMNS
Name Type Description owner CHARACTER VARYING 列が存在する表またはビューの所有者のユーザー名。 schema_name CHARACTER VARYING 表またはビューが存在するスキーマの名前。 table_name CHARACTER VARYING 列が存在する表またはビューの名前。 column_name CHARACTER VARYING 列の名前。 data_type CHARACTER VARYING 列のデータ型。 data_length NUMERIC テキスト列の長さ。 data_precision NUMERIC NUMBER 列の 精度(桁数) data_scale NUMERIC NUMBER 列の スケール 。 nullable CHARACTER(1) 列がNULL可能かどうか - 可能な値は次のとおりです。 column_id NUMERIC 表またはビュー内の列の相対位置。 data_default CHARACTER VARYING 列に割り当てられたデフォルト値。 DBA_TAB_PARTITIONS ビューは、データベース内に存在するすべてのパーティションに関する情報を提供します。 Name Type Description table_owner TEXT パーティションが存在するテーブルの所有者。 schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT テーブルの名前。 composite TEXT 表がサブパーティション化されている場合は YES です。 表がサブパーティション化されていない場合は、 NO 。 partition_name TEXT パーティションの名前。 subpartition_count BIGINT パーティション内のサブパーティションの数。 high_value TEXT CREATE TABLE ステートメントで 指定された高位区分値 。 high_value_length INTEGER パーティショニング値の長さ。 partition_position INTEGER 1 最初のパーティションのために、 2 番目のパーティションの場合など tablespace_name TEXT パーティションが存在する表領域の名前。 pct_free NUMERIC 互換性のためにのみ含まれています。常に 0 pct_used NUMERIC 互換性のためにのみ含まれています。常に 0 ini_trans NUMERIC 互換性のためにのみ含まれています。常に 0 max_trans NUMERIC 互換性のためにのみ含まれています。常に 0 initial_extent NUMERIC 互換性のためにのみ含まれています。常に NULL next_extent NUMERIC 互換性のためにのみ含まれています。常に NULL min_extent NUMERIC 互換性のためにのみ含まれています。常に 0 max_extent NUMERIC 互換性のためにのみ含まれています。常に 0 pct_increase NUMERIC 互換性のためにのみ含まれています。常に 0 freelists NUMERIC 互換性のためにのみ含まれています。常に NULL freelist_groups NUMERIC 互換性のためにのみ含まれています。常に NULL logging CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に YES compression CHARACTER VARYING(8) 互換性のためにのみ含まれています。常に NONE num_rows NUMERIC pg_class.reltuples 同じ です。 blocks INTEGER pg_class.relpages. 同じ pg_class.relpages. empty_blocks NUMERIC 互換性のためにのみ含まれています。常に NULL avg_space NUMERIC 互換性のためにのみ含まれています。常に NULL chain_cnt NUMERIC 互換性のためにのみ含まれています。常に NULL avg_row_len NUMERIC 互換性のためにのみ含まれています。常に NULL sample_size NUMERIC 互換性のためにのみ含まれています。常に NULL last_analyzed TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。常に NULL buffer_pool CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に NULL global_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に YES user_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に NO backing_table REGCLASS パーティションバッキングテーブルの名前。 DBA_TAB_SUBPARTITIONS ビューは、データベース内に存在するサブパーティションのすべての情報を提供します。 Name Type Description table_owner TEXT サブパーティションが存在する表の所有者。 schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT テーブルの名前。 partition_name TEXT パーティションの名前。 subpartition_name TEXT サブパーティションの名前。 high_value TEXT CREATE TABLE ステートメントで 指定された高いサブパーティション化値 。 high_value_length INTEGER サブパーティション化値の長さ。 subpartition_position INTEGER 1 最初のサブパーティションのための、 2 番目のサブパーティションの場合など tablespace_name TEXT サブパーティションが存在する表領域の名前。 pct_free NUMERIC 互換性のためにのみ含まれています。常に 0 pct_used NUMERIC 互換性のためにのみ含まれています。常に 0 ini_trans NUMERIC 互換性のためにのみ含まれています。常に 0 max_trans NUMERIC 互換性のためにのみ含まれています。常に 0 initial_extent NUMERIC 互換性のためにのみ含まれています。常に NULL next_extent NUMERIC 互換性のためにのみ含まれています。常に NULL min_extent NUMERIC 互換性のためにのみ含まれています。常に 0 max_extent NUMERIC 互換性のためにのみ含まれています。常に 0 pct_increase NUMERIC 互換性のためにのみ含まれています。常に 0 freelists NUMERIC 互換性のためにのみ含まれています。常に NULL freelist_groups NUMERIC 互換性のためにのみ含まれています。常に NULL logging CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に YES compression CHARACTER VARYING(8) 互換性のためにのみ含まれています。常に NONE num_rows NUMERIC pg_class.reltuples 同じ です。 blocks INTEGER pg_class.relpages. 同じ pg_class.relpages. empty_blocks NUMERIC 互換性のためにのみ含まれています。常に NULL avg_space NUMERIC 互換性のためにのみ含まれています。常に NULL chain_cnt NUMERIC 互換性のためにのみ含まれています。常に NULL avg_row_len NUMERIC 互換性のためにのみ含まれています。常に NULL sample_size NUMERIC 互換性のためにのみ含まれています。常に NULL last_analyzed TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。常に NULL buffer_pool CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に NULL global_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に YES user_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に NO backing_table REGCLASS サブパーティションのバッキングテーブルの名前。 DBA_TABLES ビューは、データベース内のすべてのテーブルに関する情報を提供します。 Name Type Description owner TEXT 表の所有者のユーザー名。 schema_name TEXT 表が属するスキーマの名前。 table_name TEXT テーブルの名前。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 status CHARACTER VARYING(5) 互換性のためにのみ含まれています。常に VALID 設定され ます。 temporary CHARACTER(1) テーブルが一時的な場合は Y です。 テーブルが永続的な場合は N です。 DBA_TRIGGERS
Name Type Description owner TEXT トリガーの所有者のユーザー名。 schema_name TEXT トリガーが存在するスキーマの名前。 trigger_name TEXT トリガーの名前。 trigger_type TEXT トリガーのタイプ。可能な値は次のとおりです。 BEFORE ROW BEFORE STATEMENT AFTER ROW AFTER STATEMENT triggering_event TEXT トリガーを発生させるイベント。 table_owner TEXT トリガーが定義されているテーブルの所有者のユーザー名。 base_object_type TEXT 互換性のためにのみ含まれています。値は常に TABLE ます。 table_name TEXT トリガーが定義されているテーブルの名前。 referencing_names TEXT 互換性のためにのみ含まれています。価値はいつも REFERENCING NEW AS NEW OLD AS OLD ます。 status TEXT ステータスは、トリガーが有効( VALID )か無効( NOTVALID ) かを示します 。 description TEXT 互換性のためにのみ含まれています。 trigger_body TEXT トリガーの本体。 action_statement TEXT トリガーが起動したときに実行されるSQLコマンド。 DBA_TYPES ビューは、データベース内のすべてのオブジェクトタイプに関する情報を提供します。 Name Type Description owner TEXT オブジェクト型の所有者。 schema_name TEXT 型が定義されているスキーマの名前。 type_name TEXT 型の名前。 type_oid OID 型のオブジェクト識別子(OID)。 typecode TEXT 型の型コードです。可能な値は次のとおりです。 OBJECT COLLECTION OTHER attributes INTEGER 型の属性の数。 DBA_USERS ビューには、データベースのすべてのユーザーに関する情報を提供します。 Name Type Description username TEXT ユーザーのユーザー名。 user_id OID ユーザーのID番号。 password CHARACTER VARYING(30) ユーザーのパスワード(暗号化された)。 account_status CHARACTER VARYING(32) アカウントの現在のステータス。可能な値は次のとおりです。 OPEN EXPIRED & LOCKED(TIMED) edb_get_role_status( role_id ) 関数を 使用して 、アカウントの現在のステータスを取得します。 lock_date TIMESTAMP WITHOUT TIME ZONE アカウントのステータスが LOCKED 、 lock_date はアカウントがロックされた日時が表示されます。 expiry_date TIMESTAMP WITHOUT TIME ZONE パスワードの有効期限。 現在のパスワード有効期限を取得 するには、 edb_get_password_expiry_date( role_id ) 関数を 使用し ます。 default_tablespace TEXT アカウントに関連付けられたデフォルトの表領域。 temporary_tablespace CHARACTER VARYING(30) 互換性のためにのみ含まれています。値は常に ''(空の文字列)になります。 created TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。値は常に NULL です。 profile CHARACTER VARYING(30) ユーザーに関連付けられたプロファイル。 initial_rsrc_consumer_group CHARACTER VARYING(30) 互換性のためにのみ含まれています。値は常に NULL です。 external_name CHARACTER VARYING(4000) 互換性のためにのみ含まれています。値は常に NULL です。 DBA_VIEW_COLUMNS ビューは、データベース内のすべてのカラムに関する情報を提供します。 Name Type Description owner CHARACTER VARYING ビューの所有者のユーザー名。 schema_name CHARACTER VARYING ビューが属するスキーマの名前。 view_name CHARACTER VARYING ビューの名前。 column_name CHARACTER VARYING 列の名前。 data_type CHARACTER VARYING 列のデータ型。 data_length NUMERIC テキスト列の長さ。 data_precision NUMERIC NUMBER 列の 精度(桁数) data_scale NUMERIC スケール NUMBER 列。 nullable CHARACTER(1) 列がNULL可能かどうか - 可能な値は次のとおりです。 column_id NUMERIC ビュー内の列の相対位置。 data_default CHARACTER VARYING 列に割り当てられたデフォルト値。 DBA_VIEWS ビューは、データベース内のすべてのビューについての情報を提供します。 Name Type Description owner TEXT ビューの所有者のユーザー名。 schema_name TEXT ビューが属するスキーマの名前。 view_name TEXT ビューの名前。 text TEXT ビューを定義する SELECT ステートメント のテキスト 。 USER_ALL_TABLES ビューには、現在のユーザーが所有するすべてのテーブルに関する情報を提供します。 Name Type Description schema_name TEXT 表が属するスキーマの名前。 table_name TEXT の名前
テーブル。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 status CHARACTER VARYING(5) 互換性のためにのみ含まれています。常に VALID 設定されてい ます。 temporary TEXT テーブルが一時的な場合は Y です。 テーブルが永続的な場合は N です。 USER_CONS_COLUMNS ビューは、現在のユーザが所有しているテーブル内の制約に含まれているすべての列に関する情報を提供します。 Name Type Description owner TEXT 制約の所有者のユーザー名。 schema_name TEXT 制約が属するスキーマの名前。 constraint_name TEXT 制約の名前。 table_name TEXT 制約が属するテーブルの名前。 column_name TEXT 制約で参照される列の名前。 position SMALLINT オブジェクト定義内の列の位置。 constraint_def TEXT 制約の定義。 USER_CONSTRAINTS ビューは、現在のユーザが所有しているテーブルの上に置かすべての制約についての情報を提供します。 Name Type Description owner TEXT 制約の所有者の名前。 schema_name TEXT 制約が属するスキーマの名前。 constraint_name TEXT 制約の名前。 constraint_type TEXT 制約タイプ。可能な値は次のとおりです。 C - チェック制約 F - 外部キー制約 P - 主キー制約 U - ユニークなキー制約 R - 参照整合性制約 V - ビューの制約 O - 読み取り専用で、ビューに table_name TEXT 制約が属するテーブルの名前。 search_condition TEXT 検査制約に適用される検索条件。 r_owner TEXT 参照制約によって参照される表の所有者。 r_constraint_name TEXT 参照先テーブルの制約定義の名前。 delete_rule TEXT 参照制約の削除規則。可能な値は次のとおりです。 C - カスケード R - 制限する N - 何もしない deferrable BOOLEAN 制約が遅延可能( T または F )である 場合に指定します 。 deferred BOOLEAN 制約が延期されているかどうかを指定します( T または F )。 index_owner TEXT 索引所有者のユーザー名。 index_name TEXT インデックスの名前。 constraint_def TEXT 制約の定義。 USER_DB_LINKS ビューには、現在のユーザーが所有するすべてのデータベース・リンクに関する情報を提供します。 Name Type Description db_link TEXT データベースリンクの名前。 type CHARACTER VARYING リモートサーバーの種類。値は REDWOOD または EDB いずれかになります username TEXT ログインしているユーザーのユーザー名。 password TEXT リモートサーバーでの認証に使用されるパスワード。 host TEXT リモートサーバーの名前またはIPアドレス。 USER_IND_COLUMNS ビューには、現在のユーザーが所有する表の索引で参照されるすべての列に関する情報を提供します。 Name Type Description schema_name TEXT 索引が属するスキーマの名前。 index_name TEXT インデックスの名前。 table_name TEXT 索引が属する表の名前。 column_name TEXT 列の名前。 column_position SMALLINT インデックス内の列の位置。 column_length SMALLINT 列の長さ(バイト単位)。 char_length NUMERIC 列の長さ(文字数)。 descend CHARACTER(1) 常に Y (降順)に 設定し ます。互換性のためにのみ含まれています。 USER_INDEXES ビューは、現在のユーザによって所有されているテーブルのすべてのインデックスについての情報を提供します。 Name Type Description schema_name TEXT 索引が属するスキーマの名前。 index_name TEXT インデックスの名前。 index_type TEXT 互換性のためにのみ含まれています。索引タイプは常に BTREE です。 table_owner TEXT 索引付けされた表の所有者のユーザー名。 table_name TEXT 索引付けされた表の名前。 table_type TEXT 互換性のためにのみ含まれています。常に TABLE 設定され ます。 uniqueness TEXT インデックスが UNIQUE か NONUNIQUE か を示します 。 compression CHARACTER(1) 互換性のためにのみ含まれています。常に N (圧縮 されて いない)に 設定され ます。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 logging TEXT 互換性のためにのみ含まれています。常に LOGGING 設定され LOGGING ます。 status TEXT オブジェクトの状態が有効かどうか。 ( VALID または INVALID )。 partitioned CHARACTER(3) 互換性のためにのみ含まれています。常に NO 設定し ます。 temporary CHARACTER(1) 互換性のためにのみ含まれています。常に N 設定されてい ます。 secondary CHARACTER(1) 互換性のためにのみ含まれています。常に N 設定されてい ます。 join_index CHARACTER(3) 互換性のためにのみ含まれています。常に NO 設定し ます。 dropped CHARACTER(3) 互換性のためにのみ含まれています。常に NO 設定し ます。 USER_JOBS ビューには、現在のユーザーが所有するすべてのジョブに関する情報を提供します。 Name Type Description job INTEGER ジョブのID(ジョブID)。 log_user TEXT ジョブを送信したユーザーの名前。 priv_user TEXT log_user 同じ です。互換性のためにのみ含まれています。 schema_user TEXT ジョブを解析するために使用されるスキーマの名前。 last_date TIMESTAMP WITH TIME ZONE このジョブが正常に実行された最後の日付。 last_sec TEXT last_date 同じ last_date 。 this_date TIMESTAMP WITH TIME ZONE ジョブの実行が開始された日付。 this_sec TEXT this_date 同じ this_date 。 next_date TIMESTAMP WITH TIME ZONE このジョブが実行される次の日付。 next_sec TEXT next_date 同じ です。 total_time INTERVAL このジョブの実行時間(秒単位)。 broken TEXT Yの 場合 、このジョブの実行は試行されません。 Nの 場合 、このジョブは実行を試みます。 interval TEXT 決定する
どのくらいの頻度でジョブが繰り返されるか。 failures BIGINT 最後に正常に実行されてからジョブが完了しなかった回数。 what TEXT ジョブの実行時に実行されるジョブ定義(PL / SQLコード・ブロック)。 nls_env CHARACTER VARYING(4000) 常に NULL です。互換性のためにのみ提供されます。 misc_env BYTEA 常に NULL です。互換性のためにのみ提供されます。 instance NUMERIC 常に 0 です。互換性のためにのみ提供されます。 USER_OBJECTS ビューには、現在のユーザーが所有するすべてのオブジェクトに関する情報を提供します。 Name Type Description schema_name TEXT オブジェクトが属するスキーマの名前。 object_name TEXT オブジェクトの名前。 object_type TEXT オブジェクトのタイプ - 可能な値は 、 INDEX 、 FUNCTION 、 PACKAGE 、 PACKAGE BODY 、 PROCEDURE 、 SEQUENCE 、 SYNONYM 、 TABLE 、 TRIGGER 、および VIEW です。 status CHARACTER VARYING 互換性のためにのみ含まれています。常に VALID 設定され ます。 temporary TEXT オブジェクトが一時的な場合は Y です。 オブジェクトが一時的でない場合は N USER_PART_KEY_COLUMNS ビューは、データベースに存在するパーティション表のキー列に関する情報を提供します。 Name Type Description schema_name TEXT 表が存在するスキーマの名前。 name TEXT 列が存在する表の名前。 object_type CHARACTER(5) 互換性のためのみ。常に TABLE 。 column_name TEXT キーが定義されている列の名前。 column_position INTEGER 1 最初の列に対して、 2 列目は2など USER_PART_TABLES ビューは、現在のユーザが所有しているデータベースで仕切られたテーブルのすべての情報を提供します。 Name Type Description schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT テーブルの名前。 partitioning_type TEXT テーブルパーティションを定義するために使用されるパーティションタイプ。 subpartitioning_type TEXT 表のサブパーティションを定義するために使用されるサブパーティション化タイプ。 partition_count BIGINT テーブル内のパーティションの数。 def_subpartition_count INTEGER 表内のサブパーティションの数。 partitioning_key_count INTEGER 指定された区分キーの数。 subpartitioning_key_count INTEGER 指定されたサブパーティション化キーの数 status CHARACTER VARYING(8) 互換性のためにのみ提供されます。常に VALID です。 def_tablespace_name CHARACTER VARYING(30) 互換性のためにのみ提供されます。常に NULL です。 def_pct_free NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_pct_used NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_ini_trans NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_max_trans NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_initial_extent CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_min_extents CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_max_extents CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_pct_increase CHARACTER VARYING(40) 互換性のためにのみ提供されます。常に NULL です。 def_freelists NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_freelist_groups NUMERIC 互換性のためにのみ提供されます。常に NULL です。 def_logging CHARACTER VARYING(7) 互換性のためにのみ提供されます。常に YES 。 def_compression CHARACTER VARYING(8) 互換性のためにのみ提供されます。常に NONE def_buffer_pool CHARACTER VARYING(7) 互換性のためにのみ提供されます。常に DEFAULT ref_ptn_constraint_name CHARACTER VARYING(30) 互換性のためにのみ提供されます。常に NULL interval CHARACTER VARYING(1000) 互換性のためにのみ提供されます。常に NULL USER_POLICIES ビューは、ポリシーが適用されたオブジェクトを含むスキーマは、現在のセッションのユーザーと同じ名前を持つポリシーに関する情報を提供します。このビューは、スーパーユーザーのみがアクセスできます。 Name Type Description schema_name TEXT オブジェクトが存在するスキーマの名前。 object_name TEXT ポリシーが適用されるオブジェクトの名前。 policy_group TEXT ポリシーグループの名前。互換性のためにのみ含まれています。常に空文字列に設定されます。 policy_name TEXT ポリシーの名前。 pf_owner TEXT ポリシー関数を含むスキーマの名前、またはポリシー関数を含むパッケージを含むスキーマ。 package TEXT ポリシー関数を含むパッケージの名前(関数がパッケージに属している場合)。 function TEXT ポリシー関数の名前。 sel TEXT ポリシーが SELECT コマンドに 適用されるかどうか 。可能な値は YES または NO です。 ins TEXT ポリシーが INSERT コマンドに 適用されるかどうか 。可能な値は YES または NO です。 upd TEXT ポリシーが UPDATE コマンドに 適用されるかどうか 。可能な値は YES または NO です。 del TEXT ポリシーが DELETE コマンドに 適用されるかどうか 。可能な値は YES または NO です。 idx TEXT インデックス保守にポリシーが適用されるかどうか。可能な値は YES または NO です。 chk_option TEXT INSERT および UPDATE コマンド でチェックオプションが有効であるかどうか 。可能な値は YES または NO です。 enable TEXT オブジェクトに対してポリシーが有効かどうか。可能な値は YES または NO です。 static_policy TEXT ポリシーが静的であるかどうか。互換性のためにのみ含まれています。常に NO 設定し ます。 policy_type TEXT ポリシータイプ。互換性のためにのみ含まれています。常に UNKNOWN 設定されてい ます。 long_predicate TEXT 互換性のためにのみ含まれています。常に YES 設定し ます。 USER_QUEUES ビューには、現在のユーザーは、使用権限を持っている上の任意のキューに関する情報を提供します。 Name Type Description name TEXT キューの名前。 queue_table TEXT キューが存在するキュー表の名前。 qid OID キューのシステム割り当てオブジェクトID。 queue_type CHARACTER VARYING キュータイプ。であってもよい EXCEPTION _ QUEUE 、 NON _ PERSISTENT _ QUEUE 、または NORMAL _ QUEUE 。 max_retries NUMERIC デキュー試行の最大回数。 retrydelay NUMERIC 再試行と再試行の間に許可される最大時間。 enqueue_enabled CHARACTER VARYING キューがエンキューを許可する場合は YES です。 キューにない場合は NO 。 dequeue_enabled CHARACTER VARYING キューがデキューを許可する場合は YES 。 キューにない場合は NO 。 retention CHARACTER VARYING 処理されたメッセージがキューに保持される秒数。 user_comment CHARACTER VARYING A
ユーザーが指定したコメント。 network_name キャラクター バリエーション キューが存在するネットワークの名前。 sharded キャラクター バリエーション キューがシャードされたネットワーク上にある場合は YES です。 キューにない場合は NO 。 USER_QUEUE_TABLES ビューには、現行のユーザーがアクセスできるキュー表のすべての情報を提供します。 Name Type Description queue_table TEXT ユーザーが指定したキュー表の名前。 type CHARACTER VARYING キュー表に保管されるデータのタイプ。 object_type TEXT ユーザ定義のペイロードタイプ。 sort_order CHARACTER VARYING キュー表がソートされる順序。 recipients CHARACTER VARYING 常に SINGLE 。 message_grouping CHARACTER VARYING 常に NONE です。 compatible CHARACTER VARYING このキュー表が互換性のあるAdvanced Serverリリースのリリース番号。 primary_instance NUMERIC 常に 0 です。 secondary_instance NUMERIC 常に 0 です。 owner_instance NUMERIC キュー表を所有するインスタンスのインスタンス番号。 user_comment キャラクター バリエーション 表が作成されたときに提供されたユーザーのコメント。 secure キャラクター バリエーション YES は、キュー表が安全であることを示します。 NO は、そうでないことを示します。 USER_ROLE_PRIVS ビュー現在ユーザーに付与れいる権限に関する情報提供します。ユーザが付与されたロールごとに行が作成されます。 Name Type Description username TEXT 役割が付与されたユーザーの名前。 granted_role TEXT 権限受領者に付与されたロールの名前。 admin_option TEXT 役割がadminオプションで許可されている場合は YES 、 それ以外の場合 は NO 。 default_role TEXT 権限受領者がセッションを作成するときにロールが使用可能になっている場合は YES です。 os_granted CHARACTER VARYING(3) 互換性のためにのみ含まれています。常にNO。 USER_SEQUENCES ビューには、現在のユーザーに属するすべてのユーザ定義のシーケンスについての情報を提供します。 Name Type Description schema_name TEXT シーケンスが存在するスキーマの名前。 sequence_name TEXT シーケンスの名前。 min_value NUMERIC サーバーがシーケンスに割り当てる最小値。 max_value NUMERIC サーバーがシーケンスに割り当てる最高値。 increment_by NUMERIC 現在のシーケンス番号に加算された値。次のシーケンス番号が作成されます。 cycle_flag CHARACTER VARYING min_value または max_value. に達したときにシーケンスをラップするかどうかを指定し max_value. order_flag CHARACTER VARYING 互換性のためにのみ含まれています。常に Y 。 cache_size NUMERIC メモリー内の事前割り振り済みシーケンス番号の数。 last_number NUMERIC ディスクに保存された最後のシーケンス番号の値。 USER_SOURCE ビューは、現行のユーザーが所有するすべてのプログラムについての情報を提供します。 Name Type Description schema_name TEXT プログラムが属するスキーマの名前。 name TEXT プログラムの名前。 type TEXT タイプ
プログラム - 可能な値は、 FUNCTION 、 PACKAGE 、 PACKAGE BODY 、 PROCEDURE 、および TRIGGER です。 line INTEGER 与えられたプログラムに対するソースコードの行番号。 text TEXT ソースコードの行。 USER_SUBPART_KEY_COLUMNS ビューには、現在のユーザーに属するサブパーティション化されているこれらのパーティションテーブルのキー列に関する情報を提供します。 Name Type Description schema_name TEXT 表が存在するスキーマの名前。 name TEXT 列が存在する表の名前。 object_type CHARACTER(5) 互換性のためのみ。常に TABLE 。 column_name TEXT キーが定義されている列の名前。 column_position INTEGER 1 最初の列に対して、 2 列目は2など USER_SYNONYMS ビューには、現在のユーザーが所有するすべての同義語に関する情報を提供します。 Name Type Description schema_name TEXT シノニムが存在するスキーマの名前。 synonym_name TEXT 同義語の名前。 table_owner TEXT シノニムが定義されている表の所有者のユーザー名。 table_schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT シノニムが定義されている表の名前。 db_link TEXT 関連するデータベースリンクの名前。 USER_TAB_COLUMNS ビューは、現在のユーザが所有するテーブルとビューのすべての列に関する情報を表示します。 Name Type Description schema_name CHARACTER VARYING 表またはビューが存在するスキーマの名前。 table_name CHARACTER VARYING 列が存在する表またはビューの名前。 column_name CHARACTER VARYING 列の名前。 data_type CHARACTER VARYING 列のデータ型。 data_length NUMERIC テキスト列の長さ。 data_precision NUMERIC NUMBER 列の 精度(桁数) data_scale NUMERIC NUMBER 列の スケール 。 nullable CHARACTER(1) 列がNULL可能かどうか - 可能な値は次のとおりです Y Y - 列はNULL可能です。 N - 列はnullを許可しません。 column_id NUMERIC 表内の列の相対位置。 data_default CHARACTER VARYING 列に割り当てられたデフォルト値。 USER_TAB_PARTITIONS ビューには、現在のユーザーが所有するすべてのパーティションに関する情報を提供します。 Name Type Description schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT テーブルの名前。 composite TEXT 表がサブパーティション化されている場合は YES です。 表がサブパーティション化されていない場合は、 NO 。 partition_name TEXT パーティションの名前。 subpartition_count BIGINT パーティション内のサブパーティションの数。 high_value TEXT CREATE TABLE ステートメントで 指定された高位区分値 。 high_value_length INTEGER パーティショニング値の長さ。 partition_position INTEGER 1 最初のパーティションのために、 2 番目のパーティションの場合など tablespace_name TEXT パーティションが存在する表領域の名前。 pct_free NUMERIC 互換性のためにのみ含まれています。常に 0 pct_used NUMERIC 互換性のためにのみ含まれています。常に 0 ini_trans NUMERIC 互換性のためにのみ含まれています。常に 0 max_trans NUMERIC 互換性のためにのみ含まれています。常に 0 initial_extent NUMERIC 互換性のためにのみ含まれています。常に NULL next_extent NUMERIC 互換性のためにのみ含まれています。常に NULL min_extent NUMERIC 互換性のためにのみ含まれています。常に 0 max_extent NUMERIC 互換性のためにのみ含まれています。常に 0 pct_increase NUMERIC 互換性のためにのみ含まれています。常に 0 freelists NUMERIC 互換性のためにのみ含まれています。常に NULL freelist_groups NUMERIC 互換性のためにのみ含まれています。常に NULL logging CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に YES compression CHARACTER VARYING(8) 互換性のためにのみ含まれています。常に NONE num_rows NUMERIC pg_class.reltuples 同じ です。 blocks INTEGER pg_class.relpages. 同じ pg_class.relpages. empty_blocks NUMERIC 互換性のためにのみ含まれています。常に NULL avg_space NUMERIC 互換性のためにのみ含まれています。常に NULL chain_cnt NUMERIC 互換性のためにのみ含まれています。常に NULL avg_row_len NUMERIC 互換性のためにのみ含まれています。常に NULL sample_size NUMERIC 互換性のためにのみ含まれています。常に NULL last_analyzed TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。常に NULL buffer_pool CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に NULL global_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に YES user_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に NO backing_table REGCLASS パーティションバッキングテーブルの名前。 USER_TAB_SUBPARTITIONS
Name Type Description schema_name TEXT 表が存在するスキーマの名前。 table_name TEXT テーブルの名前。 partition_name TEXT パーティションの名前。 subpartition_name TEXT サブパーティションの名前。 high_value TEXT CREATE TABLE ステートメントで 指定された高いサブパーティション化値 。 high_value_length INTEGER サブパーティション化値の長さ。 subpartition_position INTEGER 1 最初のサブパーティションのための、 2 番目のサブパーティションの場合など tablespace_name TEXT サブパーティションが存在する表領域の名前。 pct_free NUMERIC 互換性のためにのみ含まれています。常に 0 pct_used NUMERIC 互換性のためにのみ含まれています。常に 0 ini_trans NUMERIC 互換性のためにのみ含まれています。常に 0 max_trans NUMERIC 互換性のためにのみ含まれています。常に 0 initial_extent NUMERIC 互換性のためにのみ含まれています。常に NULL next_extent NUMERIC 互換性のためにのみ含まれています。常に NULL min_extent NUMERIC 互換性のためにのみ含まれています。常に 0 max_extent NUMERIC 互換性のためにのみ含まれています。常に 0 pct_increase NUMERIC 互換性のためにのみ含まれています。常に 0 freelists NUMERIC 互換性のためにのみ含まれています。常に NULL freelist_groups NUMERIC 互換性のためにのみ含まれています。常に NULL logging CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に YES compression CHARACTER VARYING(8) 互換性のためにのみ含まれています。常に NONE num_rows NUMERIC pg_class.reltuples 同じ です。 blocks INTEGER pg_class.relpages. 同じ pg_class.relpages. empty_blocks NUMERIC 互換性のためにのみ含まれています。常に NULL avg_space NUMERIC 互換性のためにのみ含まれています。常に NULL chain_cnt NUMERIC 互換性のためにのみ含まれています。常に NULL avg_row_len NUMERIC 互換性のためにのみ含まれています。常に NULL sample_size NUMERIC 互換性のためにのみ含まれています。常に NULL last_analyzed TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。常に NULL buffer_pool CHARACTER VARYING(7) 互換性のためにのみ含まれています。常に NULL global_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に YES user_stats CHARACTER VARYING(3) 互換性のためにのみ含まれています。常に NO backing_table REGCLASS パーティションバッキングテーブルの名前。 USER_TABLES 現在のユーザーが所有するすべての表に関する情報が表示されます。 Name Type Description schema_name TEXT 表が属するスキーマの名前。 table_name TEXT テーブルの名前。 tablespace_name TEXT デフォルトの表領域以外の場合に表が存在する表領域の名前。 status CHARACTER VARYING(5) 互換性のためにのみ含まれています。常に VALID 設定されてい ます。 temporary CHARACTER(1) Y テーブルが一時的な場合。 テーブルが一時的でない場合は N です。 USER_TRIGGERS 、現行のユーザーが所有する表のすべてのトリガーに関する情報が表示されます。 Name Type Description schema_name TEXT トリガーが存在するスキーマの名前。 trigger_name TEXT トリガーの名前。 trigger_type TEXT トリガーのタイプ。可能な値は次のとおりです。 BEFORE ROW BEFORE STATEMENT AFTER ROW AFTER STATEMENT triggering_event TEXT トリガーを発生させるイベント。 table_owner TEXT トリガーが定義されているテーブルの所有者のユーザー名。 base_object_type TEXT 互換性のためにのみ含まれています。値は常に TABLE ます。 table_name TEXT トリガーが定義されているテーブルの名前。 referencing_names TEXT 互換性のためにのみ含まれています。価値はいつも REFERENCING NEW AS NEW OLD AS OLD ます。 status TEXT ステータスは、トリガーが有効( VALID )か無効( NOTVALID ) かを示します 。 description TEXT 互換性のためにのみ含まれています。 trigger_body TEXT トリガーの本体。 action_statement TEXT トリガーが起動したときに実行されるSQLコマンド。 USER_TYPES ビューには、現在のユーザーが所有するすべてのオブジェクトタイプに関する情報を提供します。 Name Type Description schema_name TEXT 型が定義されているスキーマの名前。 type_name TEXT 型の名前。 type_oid OID 型のオブジェクト識別子(OID)。 typecode TEXT 型の型コードです。可能な値は次のとおりです。 OBJECT COLLECTION OTHER attributes INTEGER 型の属性の数。 USER_USERS ビューには、現在のユーザーに関する情報を提供します。 Name Type Description username TEXT ユーザーのユーザー名。 user_id OID ユーザーのID番号。 account_status CHARACTER VARYING(32) アカウントの現在のステータス。可能な値は次のとおりです。 OPEN EXPIRED & LOCKED(TIMED) edb_get_role_status( role_id ) 関数を 使用して 、アカウントの現在のステータスを取得します。 lock_date TIMESTAMP WITHOUT TIME ZONE アカウントのステータスが LOCKED 、 lock_date はアカウントがロックされた日時が表示されます。 expiry_date TIMESTAMP WITHOUT TIME ZONE アカウントの有効期限。 default_tablespace TEXT アカウントに関連付けられたデフォルトの表領域。 temporary_tablespace CHARACTER VARYING(30) 互換性のためにのみ含まれています。値は常に ''(空の文字列)になります。 created TIMESTAMP WITHOUT TIME ZONE 互換性のためにのみ含まれています。値は常に NULL なり NULL 。 initial_rsrc_consumer_group CHARACTER VARYING(30) 互換性のためにのみ含まれています。値は常に NULL なり NULL 。 external_name CHARACTER VARYING(4000) 互換性のためにのみ含まれています。常に NULL 設定され NULL 。 USER_VIEW_COLUMNS ビューは、現在のユーザが所有するビューのすべての列についての情報を提供します。 Name Type Description schema_name CHARACTER VARYING ビューが属するスキーマの名前。 view_name CHARACTER VARYING ビューの名前。 column_name CHARACTER VARYING 列の名前。 data_type CHARACTER VARYING 列のデータ型。 data_length NUMERIC テキスト列の長さ。 data_precision NUMERIC NUMBER 列の 精度(桁数) data_scale NUMERIC NUMBER 列の スケール 。 nullable CHARACTER(1) 列がNULL可能であるか否か-可能な値は: Y -列がNULL可能です。 N - 列はnullを許可しません。 column_id NUMERIC ビュー内の列の相対位置。 data_default CHARACTER VARYING 列に割り当てられたデフォルト値。 USER_VIEWS ビューには、現在のユーザーが所有するすべてのビューについての情報を提供します。 Name Type Description schema_name TEXT ビューが存在するスキーマの名前。 view_name TEXT ビューの名前。 text TEXT SELECT ビューを定義する声明。 V$VERSION ビューでは、製品の互換性に関する情報を提供します。 Name Type Description banner TEXT 製品の互換性情報を表示します。 PRODUCT_COMPONENT_VERSION ビューは、製品のバージョンの互換性に関するバージョン情報を提供します。 Name Type Description product CHARACTER VARYING(74) 製品の名前。 version CHARACTER VARYING(74 製品のバージョン番号。 status CHARACTER VARYING(74) 互換性のために含まれています。常に Available です。 以下のシステムカタログ表には、データベースオブジェクトの定義が含まれています。システムテーブルのレイアウトは変更される可能性があります。システムテーブルに格納されている情報に依存するアプリケーションを作成する場合は、既存のカタログビューを使用するか、カタログビューを作成してアプリケーションをシステムテーブルの変更から分離することが賢明です。 dual は、Oracleデータベースとの互換性のために提供される単一行、単一列の表です。 Column Type Modifiers Description dummy VARCHAR2(1) 互換性のためにのみ提供されます。 edb _ dir 表は、で作成したディレクトリを指し、各エイリアスの1つの行が含ま create directory コマンド。ディレクトリは、ユーザーがホストファイルシステムに限定してアクセスできるようにするパス名のエイリアスです。 ディレクトリを使用して、ファイルシステム内の特定のディレクトリツリーにユーザを囲むことができます。例えば、 UTL _ FILE パッケージには、ホストファイルシステム内のファイルおよびディレクトリを読み書きするためのユーザを許可する機能を提供していますが、唯一のデータベース管理者が経由へのアクセスを許可されたパスにアクセスすることができます create directory コマンド。 Column Type Modifiers Description dirname "name" not null エイリアスの名前。 dirowner oid not null エイリアスを所有するユーザーのOID。 dirpath text アクセスが許可されるディレクトリ名。 diracl aclitem[] どのユーザーがエイリアスにアクセスできるかを決定するアクセス制御リスト。 edb _ password_history 表は、各パスワード変更のために1行が含まれます。この表は、クラスタ内のすべてのデータベースで共有されます。 Column Type References Description passhistroleid oid pg_authid.oid ロールのID。 passhistpassword text md5暗号化形式のロールパスワード。 passhistpasswordsetat timestamptz パスワードが設定された時刻。 edb _ policy テーブルは、ポリシーごとに1つの行が含ま。 Column Type Modifiers Description policyname name not null ポリシー名。 policygroup oid not null 現在使用されていません。 policyobject oid not null このポリシーで保護されているテーブルのOID(object_schemaとobject_name)。 policykind char not null このポリシーによって保護されるオブジェクトの種類: テーブルの 'r' ビューの 'v' =同義語の場合 現在は常に 'r'です。 policyproc oid not null ポリシー関数のOID(function_schemaとpolicy_function)。 policyinsert boolean not null ポリシーがINSERT文によって実施されている場合は真です。 policyselect boolean not null ポリシーがSELECTステートメントによって強制される場合はtrue。 policydelete boolean not null ポリシーがDELETEステートメントによって強制されている場合は真です。 policyupdate boolean not null ポリシーがUPDATEステートメントによって適用される場合はtrue。 policyindex boolean not null 現在使用されていません。 policyenabled boolean not null ポリシーが有効な場合はtrue。 policyupdatecheck boolean not null UPDATEステートメントによって更新された行がポリシーを満たす必要がある場合はtrue。 policystatic boolean not null 現在使用されていません。 policytype integer not null 現在使用されていません。 policyopts integer not null 現在使用されていません。 policyseccols int2vector not null sec_relevant_colsにリストされている列の列番号。 edb _ profile の表は、使用可能なプロファイルに関する情報を格納します。 edb _ profiles は、クラスタ内のすべてのデータベースで共有されます。 Column Type References Description oid oid 行識別子(隠し属性、明示的に選択する必要があります)。 prfname name プロファイルの名前。 prffailedloginattempts integer プロファイルで許可されたログイン試行の失敗回数。 -1は、デフォルトプロファイルの値を使用する必要があることを示します。 -2は、失敗したログイン試行の制限がないことを示します。 prfpasswordlocktime integer プロファイルに関連付けられたパスワードロック時間(秒単位)。 -1は、デフォルトプロファイルの値を使用する必要があることを示します。 -2はアカウントを永続的にロックする必要があることを示します。 prfpasswordlifetime integer プロファイルに関連付けられているパスワードの有効期間(秒単位)。 -1は、デフォルトプロファイルの値を使用する必要があることを示します。 -2はパスワードが期限切れにならないことを示します。 prfpasswordgracetime integer プロファイルに関連付けられたパスワード猶予時間(秒単位)。 -1は、デフォルトプロファイルの値を使用する必要があることを示します。 -2はパスワードが期限切れにならないことを示します。 prfpasswordreusetime integer ユーザーがパスワードを再使用するまで待機する秒数。 -1は、デフォルトプロファイルの値を使用する必要があることを示します。 -2は、古いパスワードを決して再利用できないことを示します。 prfpasswordreusemax integer パスワードを再利用できるようにするために必要なパスワード変更の回数。 -1は、デフォルトプロファイルの値を使用する必要があることを示します。 -2は、古いパスワードを決して再利用できないことを示します。 prfpasswordverifyfuncdb oid pg_database.oid パスワード検証機能が存在するデータベースのOID。 prfpasswordverifyfunc oid pg_proc.oid プロファイルに関連付けられたパスワード検証機能のOID。 edb _ variable テーブルには、各パッケージレベルの変数(パッケージ内で宣言された各変数)のための1つの行が含ま。 Column Type Modifiers Description varname "name" not null 変数の名前。 varpackage oid not null パッケージを格納するpg_namespace行のOID。 vartype oid not null 変数の型を定義するpg_type行のOID。 varaccess "char" not null +変数がパッケージの外側に見える場合。 - 変数がパッケージ内でのみ表示されている場合 注:パブリック変数はパッケージヘッダ内で宣言されています。プライベート変数はパッケージ本体内で宣言されます。 varsrc text 変数のデフォルト値式を含む、変数宣言のソースを含みます。 varseq smallint not null 変数がパッケージ内で宣言された順序。 pg _ synonym テーブルを用いて作成された各同義語のために1つの行が含まれ CREATE SYNONYM コマンドまたは CREATE PUBLIC SYNONYM コマンド Column Type Modifiers Description synname "name" not null 同義語の名前。 synnamespace oid not null synowner 置き換えます 。 シノニムが格納されて いる pg_namespace 行の OIDを pg_namespace ます。 synowner oid not null シノニムを所有するユーザーのOID。 synobjschema "name" not null 参照されるオブジェクトが定義されているスキーマ。 synobjname "name" not null 参照されるオブジェクトの名前。 synlink text 参照されるオブジェクトが定義されているデータベースリンクの(オプションの)名前。 product _ component _ version テーブルは、特徴の互換性についての情報を含みます。アプリケーションはインストール時または実行時にこのテーブルを照会して、このデプロイメントでアプリケーションで使用される機能が使用可能であることを確認できます。 Column Type Description product character varying (74) 製品の名前。 version character varying (74) 製品のバージョン番号。 status character varying (74) リリースのステータス。 PostgreSQLの8.3、8.4、9.0、9.1、9.2、9.3、9.4、9.5、9.6、および10文書は、PostgreSQLに共通するこのガイドの部分のためのベースラインを提供し、ここに認められています。 この EnterpriseDBの 部分
PostgreSQLのドキュメント、データベース管理システム PostgreSQL i は、PostgreSQLグローバル開発グループ の 著作権©1996-2017に基づき、以下のカリフォルニア大学のライセンス条項に基づいて配布されています。 Postgres95は カリフォルニア大学リージェントの著作権©1994-5。 上記の著作権表示と本項および次の2つの段落がすべてのコピーに記載されていれば、無償で、書面による合意なしに、本ソフトウェアおよびそのドキュメンテーションを使用、複製、改変、配布することが許可されます。 いかなる場合においても、カリフォルニア大学は、カリフォルニア大学が実施していたとしても、ソフトウェアおよびその文書の使用に起因する損害を含む、直接的、間接的、偶発的、派生的、派生的損害に対する賠償責任を負わないものとしますそのような損害の可能性を知らされた。 カリフォルニア州立大学は、商品性および特定目的への適合性の黙示的な保証を含む(ただしこれらに限定されない)いかなる保証も特に断ります。本契約に基づいて提供される本ソフトウェアは、現状のままであり、カリフォルニア州立大学は、保守、サポート、更新、拡張または改変を提供する義務を負いません。 2.3.32 CREATE SYNONYM
FOR object _ schema . object _ name [ @dblink_name ]; 2.3.33 CREATE TABLE
UNIQUE ( column_name [、...]) - テーブル制約
PRIMARY KEY ( column_name [、...]) - テーブル制約
FOREIGN KEY ( column [、...]) REFERENCES reftable [( refcolumn [、...])] [ ON DELETE action ] - テーブル制約
NOT DEFERRABLE
INITIALLY DEFERRED 2.3.34 CREATE TABLE AS
2.3.35 CREATE TRIGGER
2.3.36 CREATE TYPE
NOT FINAL
NOT INSTANTIABLE
STATIC 2.3.37 CREATE TYPE BODY
STATIC 2.3.38 CREATE USER
2.3.39 CREATE USER|ROLE… PROFILE MANAGEMENT CLAUSES
| ACCOUNT {LOCK|UNLOCK}
| PASSWORD EXPIRE [AT ' timestamp '] 2.3.40 CREATE VIEW
2.3.41 DELETE
2.3.42 DROP DATABASE LINK
2.3.43 DROP DIRECTORY
2.3.44 DROP FUNCTION
2.3.45 DROP INDEX
2.3.46 DROP PACKAGE
2.3.47 DROP PROCEDURE
2.3.48 DROP PROFILE
2.3.49 DROP QUEUE
2.3.50 DROP QUEUE TABLE
[CASCADE | RESTRICT] 2.3.51 DROP SYNONYM
2.3.52 DROP ROLE
2.3.53 DROP SEQUENCE
2.3.54 DROP TABLE
(order_id int PRIMARY KEY, order_date date, …);
(order_id REFERENCES orders, quantity int, …); 2.3.55 DROP TABLESPACE
2.3.56 DROP TRIGGER
2.3.57 DROP TYPE
2.3.58 DROP USER
2.3.59 DROP VIEW
2.3.60 EXEC
EXEC update_balance();
EXEC update_balance(1,2,3); 2.3.61 GRANT
2.3.62 GRANT on Database Objects
2.3.63 GRANT on Roles
2.3.64 GRANT on System Privileges
2.3.65 INSERT
2.3.66 LOCK
2.3.67 REVOKE
2.3.68 ROLLBACK
2.3.69 ROLLBACK TO SAVEPOINT
2.3.70 SAVEPOINT
2.3.71 SELECT
2.3.71.1 FROM Clause
2.3.71.2 WHERE Clause
2.3.71.3 GROUP BY Clause
2.3.71.4 HAVING Clause
2.3.71.5 SELECT List
2.3.71.6 UNION Clause
2.3.71.7 INTERSECT Clause
2.3.71.8 MINUS Clause
2.3.71.9 CONNECT BY Clause
2.3.71.10 ORDER BY Clause
2.3.71.11 DISTINCT Clause
2.3.71.12 FOR UPDATE Clause
2.3.72 SET CONSTRAINTS
2.3.73 SET ROLE
2.3.74 SET TRANSACTION
2.3.75 TRUNCATE
2.3.76 UPDATE
2.4 関数と演算子
2.4.1 Logical Operators
2.4.2 Comparison Operators
2.4.3 Mathematical Functions and Operators
2.4.4 String Functions and Operators
2.4.5 Pattern Matching String Functions
2.4.5.1 REGEXP_COUNT
(
srcstr TEXT,
pattern TEXT,
position DEFAULT 1
modifier DEFAULT NULL
) 2.4.5.2 REGEXP_INSTR
(
srcstr TEXT,
pattern TEXT,
position INT DEFAULT 1,
occurrence INT DEFAULT 1,
returnparam INT DEFAULT 0,
modifier TEXT DEFAULT NULL,
subexpression INT DEFAULT 0,
) 2.4.5.3 REGEXP_SUBSTR
(
srcstr TEXT,
pattern TEXT,
position INT DEFAULT 1,
occurrence INT DEFAULT 1,
modifier TEXT DEFAULT NULL,
subexpression INT DEFAULT 0
) 2.4.6 Pattern Matching Using the LIKE Operator
2.4.7 Data Type Formatting Functions
2.4.7.1 IMMUTABLE TO_CHAR(TIMESTAMP, format) Function
2.4.8 Date/Time Functions and Operators
2.4.8.1 ADD_MONTHS
2.4.8.2 EXTRACT
2.4.8.3 MONTHS_BETWEEN
2.4.8.4 NEXT_DAY
2.4.8.5 NE W_TIME
2.4.8.6 ROUND
2.4.8.7 TRUNC
2.4.8.8 CURRENT DATE/TIME
2.4.8.9 NUMTODSINTERVAL
2.4.8.10 NUMTOYMINTERVAL
2.4.9 Sequence Manipulation Functions
2.4.10 Conditional Expressions
2.4.10.1 CASE
2.4.10.2 COALESCE
2.4.10.3 NULLIF
2.4.10.4 NVL
2.4.10.5 NVL2
2.4.10.6 GREATEST and LEAST
2.4.11 Aggregate Functions
2.4.12 Subquery Expressions
2.4.12.1 EXISTS
2.4.12.2 IN
2.4.12.3 NOT IN
2.4.12.4 ANY/SOME
2.4.12.5 ALL
3 Oracleカタログ・ビュー
3.1 ALL_ALL_TABLES
3.2 ALL_CONS_COLUMNS
3.3 ALL_CONSTRAINTS
3.4 ALL_DB_LINKS
3.5 ALL_DIRECTORIES
3.6 ALL_IND_COLUMNS
3.7 ALL_INDEXES
3.8 ALL_JOBS
3.9 ALL_OBJECTS
3.10 ALL_PART_KEY_COLUMNS
3.11 ALL_PART_TABLES
3.12 すべてのポリシー
3.13 ALL_QUEUES
3.14 ALL_QUEUE_TABLES
3.15 ALL_SEQUENCES
3.16 ALL_SOURCE
3.17 ALL_SUBPART_KEY_COLUMNS
3.18 ALL_SYNONYMS
3.19 ALL_TAB_COLUMNS
Y - 列はNULL可能です。 N - 列はnullを許可しません。 3.20 ALL_TAB_PARTITIONS
3.21 ALL_TAB_SUBPARTITIONS
3.22 ALL_TABLES
3.23 ALL_TRIGGERS
3.24 AL L_TYPES
3.25 全てのユーザー
3.26 ALL_VIEW_COLUMNS
3.27 ALL_VIEWS
3.28 DBA_ALL_TABLES
3.29 DBA_CONS_COLUMNS
3.30 DBA_CONSTRAINTS
3.31 DBA_DB_LINKS
3.32 DBA_DIRECTORIES
3.33 DBA_IND_COLUMNS
3.34 DBA_INDEXES
3.35 DB A_JOBS
3.36 DBA_OBJECTS
3.37 DBA_PART_KEY_COLUMNS
3.38 DBA_PART_TABLES
3.39 DBA_POLICIES
3.40 DBA_PROFILES
3.41 DBA_QUEUES
3.42 DBA_QUEUE_TABLES
3.43 DBA_ROLE_PRIVS
3.44 DBA_ROLES
3.45 DBA_SEQUENCES
3.46 DBA_SOURCE
3.47 DBA_SUBPART_KEY_COLUMNS
3.48 DBA_SYNONYMS
3.49 DBA_TAB_COLUMNS
Y - 列はNULL可能です。 N - 列はnullを許可しません。 3.50 DBA_TAB_PARTITIONS
3.51 DBA_TAB_SUBPARTITIONS
3.52 DBA_TABLES
3.53 DBA_TRIGGERS
3.54 DB A_TYPES
3.55 DBA_USERS
EXPIRED
EXPIRED(GRACE)
EXPIRED & LOCKED
EXPIRED(GRACE) & LOCKED
EXPIRED(GRACE) & LOCKED(TIMED)
LOCKED
LOCKED(TIMED) 3.56 DBA_VIEW_COLUMNS
Y - 列はNULL可能です。 N - 列はnullを許可しません。 3.57 DBA_VIEWS
3.58 USER_ALL_TABLES
3.59 USER_CONS_COLUMNS
3.60 USER_CONSTRAINTS
3.61 USER_DB_LINKS
3.62 USER_IND_COLUMNS
3.63 USER_INDEXES
3.64 米国 ER_JOBS
3.65 USER_OBJECTS
3.66 USER_PART_KEY_COLUMNS
3.67 USER_PART_TABLES
3.68 USER_POLICIES
3.69 USER_QUEUES
3.70 USER_QUEUE_TABLES
3.71 USER_ROLE_PRIVS
3.72 USER_SEQUENCES
3.73 USER_SOURCE
3.74 USER_SUBPART_KEY_COLUMNS
3.75 USER_SYNONYMS
3.76 USER_TAB_COLUMNS
3.77 USER_TAB_PARTITIONS
3.78 USER_TAB_SUBPARTITIONS
3.79 USER_TABLES
3.80 USER_TRIGGERS
3.81 USER_TYPES
3.82 USER_USERS
EXPIRED
EXPIRED(GRACE)
EXPIRED & LOCKED
EXPIRED(GRACE) & LOCKED
EXPIRED(GRACE) & LOCKED(TIMED)
LOCKED
LOCKED(TIMED) 3.83 USER_VIEW_COLUMNS
3.84 USER_VIEWS
3.85 V $ VERSION
3.86 PRODUCT_COMPONENT_VERSION
4 システムカタログテーブル
4.1 デュアル
4.2 edb_dir
4.3 edb_password_history
4.4 edb_policy
4.5 edb_profile
4.6 edb_variable
4.7 pg_synonym
4.8 product_component_version
5 謝辞