英語原文を見る

 

 

 

 

 

 

 

 

 

 

 

Oracle® 開発者用 データベースの互換性
リファレンス・ガイド

 

 

 

EDB Postgres™Advanced Server 10

2017年12月19日

 


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


1      前書き

オラクルのデータベース互換性とは、アプリケーションが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

 

 

 

 

 

1.1      新着情報

Advanced Server 10を作成するために Advanced Server 9.6に 以下のOracle機能のデータベース互換性が追加されました

      Advanced Serverは、( TYPE IS RECORD ステートメントで 宣言された)ユーザー定義のレコード・タイプ内で、そのデータ・タイプとしてフィールドによって参照 される複合タイプ( CREATE TYPE AS コマンド によって作成された )の 使用をサポートする ようになりました 。コンポジットタイプを含むこのレコードタイプは、パッケージ仕様書またはパッケージ本体でのみ宣言できます。複合型はOracleデータベースと互換性がありません。ただし、コンポジット型は、(パッケージを除いて)レコード型の一部でない限り、一般的にすべてのSPLプログラム(関数、プロシージャ、トリガ、パッケージなど)内で使用できます。複合型の詳細は、 2.3.36 項を参照してください

 

1.2      このガイドで使用される表記規則

このマニュアルでは、さまざまなコマンド、文、プログラム、例などの意味と使用法を明確にするために、特定の表記規則が使用されています。このセクションでは、これらの規則の概要を説明します。

以下の説明では、 用語 は、言語キーワード、ユーザ供給値、リテラルなどの任意の単語または単語群を指す。用語の正確な意味は、それが使用される文脈に依存する。

      イタリック体のフォントで は、通常、最初に定義された文章に新しい用語が導入されています。

·        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 」を 持っているかもしれないことを意味します

2      SQL言語

以下のセクションでは、 Advanced Serverのサブセットについて説明します。 Oracleデータベースと互換性のあるSQL言語。次のSQL構文、コマンド、データ型、および関数は、EDB Postgres Advanced ServerOracleの両方で機能します

Advanced Serverのドキュメント・セットには、拡張機能(Oracleとのデータベース互換性を提供しない機能、またはOracleスタイルのアプリケーションをサポートしない機能)の構文とコマンドが含まれています。

このセクションは、次のセクションで構成されています。

      Advanced Serverの SQL構文と言語要素の一般的な説明

      データ型

      SQLコマンドの要約

      組み込み関数

2.1      SQL構文

このセクションでは、 SQLの一般的な構文について説明します 。これは、データを定義および変更するためにSQLコマンドがどのように適用されるかについての詳細を含む次の章を理解するための基礎を形成します。

 

2.1.1    Lexical Structure

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 節で説明し ます。

 

2.1.2    Identifiers and Key Words

上の例の 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" 。ポータブルアプリケーションを作成する場合は、常に特定の名前を引用するか、引用しないことをお勧めします。

 

2.1.3    Constants

Advanced Serverの暗黙的に型指定された定数の種類は、 文字列 数値 です。明示的な型で定数を指定することもできます。これにより、より正確な表現とシステムによる効率的な処理が可能になります。これらの選択肢については、次のサブセクションで説明します。

2.1.3.1  String Constants

SQL 文字列定数 は、一重引用符( ' )で 囲まれた文字の任意のシーケンスです( たとえば、 'This is a string' 。文字列定数の中に一重引用符を含めるには、二つの隣接する一重引用符(例えば、 'Dianne''s horse' )を書いて ください。これは二重引用符( ")と同じではないことに注意してください。

2.1.3.2  Numeric Constants

数値定数は、次の一般的な形式で受け入れられます。

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 ます。

最初に割り当てられた数値定数のデータ型は、型解決アルゴリズムの出発点にすぎません。ほとんどの場合、定数はコンテキストに応じて自動的に最適な型に強制的に変換されます。必要に応じて、次のセクションで説明するように、数値をキャストして特定のデータ型として解釈させることができます。

2.1.3.3  Constants of Other Types

任意の型の定数は、次の表記法を使用して入力できます。

CAST(' string ' AS type )

文字列定数のテキストは、typeと呼ばれる type 入力変換ルーチンに渡されます 。結果は示された型の定数です。明示的な型キャストは、定数が(たとえば、それが直接的に表の列に代入される)型でなければならない場合、省略されます。この場合、自動的に強制的に強制されます。

CAST は、任意の式の実行時の型変換を指定するためにも使用できます。

 

2.1.4    Comments

コメントは二重ダッシュで始まり、行の終わりまで続く文字の任意のシーケンスです。例:

-- This is a standard SQL comment

あるいは、 Cスタイルのブロックコメントを使用することもできます。

/* multiline comment

 * block

 */

ここで、コメントは /* 始まり */ 一致する出現にまで及ぶ

 

2.2      データ型

次の表は、組み込みの汎用データ型を示しています。

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データ

 

 

2.2.1    Numeric Types

数値型は、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

次のセクションでは、型の詳細について説明します。

2.2.1.1  Integer Type s

タイプ INTEGER 、-2,147,483,648と+2,147,483,647の値の間に(小数成分なしの)整数を格納します。許容範囲外の値を格納しようとすると、エラーが発生します。

ROWID 型の 列は、 レコードの物理アドレスを記述する固定長バイナリ・データを保持します。 ROWID は、 0と4,294,967,295の値の間に(小数成分なしの)整数を格納 する、符号なしの4バイトの INTEGER です。許容範囲外の値を格納しようとすると、エラーが発生します。

2.2.1.2  Arbitrary Precision Numbers

タイプ NUMBER 、実質的に無制限の精度の桁数を格納し、正確に計算を実行できます。金額や正確さが必要な場合は他の数量を保管する場合に特にお勧めします。ただし、 NUMBER 型は、次のセクションで説明する浮動小数点型に比べて非常に遅いです。

以下では、これらの用語を使用します NUMBER 位取り は、 小数点以下の小数点以下の小数点以下の桁数です。 NUMBER 精度 、整数の有効数字の合計数、つまり小数点の両側の桁数です。したがって、23.5141の数値は6の精度と4のスケールを持ちます。整数は0のスケールを持つとみなすことができます。

NUMBER タイプ の精度と位取りの両方を 設定できます。 NUMBER 型の列を宣言するには 、構文を使用します

NUMBER( precision , scale )

精度は正でなければならず、スケールはゼロまたは正でなければなりません。あるいは、

NUMBER( precision )

0指定の NUMBER のスケールを選択し、 任意の精度または位取りを持たない列は、任意の精度および位取りの数値を精度の実装限界まで格納できる列を作成します。このような列は入力値を特定のスケールに強制しません が、宣言されたスケールの NUMBER 列は入力値をそのスケールに強制します。 ( SQL 標準では、デフォルトのスケール0、つまり整数精度への強制が必要です。移植性を最大限に高めるには、精度と位取りを明示的に指定することをお勧めします)。

値の精度または位取りが列の宣言された精度または位取りより大きい場合、システムは値を丸めようとします。宣言された制限を満たすように値を四捨五入することができない場合は、エラーが発生します。

2.2.1.3  Floating-Point Types

データ型 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 を意味し ます。

2.2.2    Character Types

次の表 に、 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.2.3    Binary Data

次のデータ型では、バイナリ文字列を格納できます。

2から 4 バイナリラージオブジェクト

Name

Storage Size

Description

BINARY

バイナリ文字列の長さ。

長さが1〜8300の固定長バイナリ文字列。

BLOB

実際のバイナリ文字列には、バイナリ文字列が127バイト未満の場合は1バイト、バイナリ文字列が127バイト以上の場合は4バイトが加算されます。

可変長バイナリ文字列

VARBINARY

バイナリ文字列の長さ

EEN 1及び8300 betw長さ 可変長のバイナリ文字列

バイナリ文字列は、オクテット(またはバイト)のシーケンスです。バイナリ文字列は、2つの特性によって文字列と区別されます。まず、バイナリ文字列は、値ゼロのオクテットと他の "印刷不可能" オクテット(32〜126の範囲外のオクテットとして定義)を 格納することを特に許可し ます。第2に、バイナリ文字列の操作は実際のバイトを処理しますが、文字列のエンコーディングと処理はロケール設定に依存します。

 

 

2.2.4    Date/Time Types

次の日付/時刻タイプの説明では 、表が作成または変更されるたびに 、構成パラメーター 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 ) が含まれますが、タイムゾーンも含まれます。

2.2.4.1  INTERVAL Types

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年として

 

2.2.4.2  Date/Time Input

日付と時刻の入力は、ISO 8601の SQL 互換形式、 Oracleの デフォルトのdd-MON-yy形式、その他の形式 で受け入れられ ます。ただし、年、月、日のいずれのコンポーネントがあいまいでないかは不明です。ただし、 あいまいさを避けるため に、 TO_DATE 関数の 使用を 強くお勧めします。

任意の日付または時刻のリテラル入力は、テキスト文字列のように単一引用符で囲む必要があります。次のSQL標準構文も使用できます。

type ' value '

type DATE または TIMESTAMP いずれか です。

value は日付/時刻テキスト文字列です。

2.2.4.2.1   日付

次の表は、日付の可能な入力形式の一部を示しています。これらはすべて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.2.4.2.2   タイムズ

次の表に、日付またはタイムスタンプの時間コンポーネントのいくつかの例を示します。

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.2.4.2.3   タイムスタンプ

タイムスタンプの有効な入力は、日付と時刻の連結で構成されます。タイムスタンプの日付部分は、 表2-7に 示すいずれかの例に従ってフォーマットすることができます 。タイムスタンプの時間部分は、 表2-8に 示すいずれかの例に従ってフォーマットすることができます

次は、 Oracleのデフォルト形式に従うタイムスタンプの例です。

08-JAN-99 04:05:06

以下は、 ISO 8601規格に 従ったタイムスタンプの例です

1999-01-08 04:05:06

2.2.4.3  Date/Time Output

日付/時刻タイプのデフォルトの出力形式は、 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

2.2.4.4  Internals

Advanced Server では、すべての日付/時刻の計算にユリウス日付が使用されます。ユリウス暦の日付は、年の長さが365.2425日であるという前提に基づいて、4713年以降の任意の日付を正しく予測または計算します。

 

2.2.5    Boolean Type

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 です。

 

2.2.6     XML Type

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)

 

 

2.3      SQLコマンド

この節では、 Advanced ServerでサポートされているOracleデータベースと互換性のあるSQLコマンドの概要を示します 。このセクションのSQLコマンドは、 OracleデータベースとAdvanced Serverデータベースの両方で動作します。

次の点に注意してください。

      Advanced Server は、ここに記載されていない他のコマンドもサポートしています。これらのコマンドには、 Oracleと同等の機能がないか、 Oracle SQLコマンドと同様の機能を提供する可能性がありますが、構文は異なります。

      このセクションのSQLコマンドは、各コマンドで使用できる完全な構文、オプション、および機能を必ずしも表すものではありません。ほとんどの場合、 Oracleデータベースと互換性のない構文、オプション、および機能は、コマンドの説明および構文から除外されています。

      Advanced Serverのドキュメント・セットには、 Oracleデータベースと互換性のないコマンド機能が記載されています

 

2.3.1    ALTER INDEX

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;

関連項目

CREATE INDEX DROP INDEX

 

 

2.3.2    ALTER PROCEDURE

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;

 

2.3.3    ALTER PROFILE

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;

 

 

 

2.3.4    ALTER QUEUE

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

 

 

2.3.5    ALTER QUEUE TABLE

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

 

 

 

2.3.6    ALTER ROLE… IDENTIFIED BY

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

ロールの新しいパスワード。

prev_password

ロールの以前のパスワード。

役割のパスワードを変更するには:

ALTER ROLE john IDENTIFIED BY xyRP35z REPLACE 23PJ74a;

 

2.3.7    ALTER ROLE - Managing Database Link and DBMS_RLS Privileges

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

 

 

2.3.8    ALTER SEQUENCE

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

 

 

2.3.9    ALTER SESSION

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';

 

 

 

2.3.10                  ALTER TABLE

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;

関連項目

CREATE TABLE DROP TABLE

 

2.3.11                  ALTER TABLESPACE

ALTER TABLESPACE - 表領域の定義を変更する

シノプシス

ALTER TABLESPACE name RENAME TO newname

説明

ALTER TABLESPACE は、表領域の定義を変更します。

パラメーター

name

既存の表領域の名前。

newname

表スペースの新しい名前。この 名前はシステム表領域用に予約されているため、 新しい名前は pg_ 始めることはできません

表領域 empspace 名前 employee_space ます。

ALTER TABLESPACE empspace RENAME TO employee_space;

関連項目

DROP TABLESPACE

 

 

2.3.12                  ALTER USER… IDENTIFIED BY

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;

関連項目

CREATE USER DROP USER

 

 

 

2.3.13                  ALTER USER|ROLE… PROFILE MANAGEMENT CLAUSES

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;

 

 

2.3.14                  CALL

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);

 

 

 

2.3.15                  COMMENT

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 '';

 

 

 

2.3.16                  COMMIT

COMMIT -コミット 現在の取引

シノプシス

COMMIT [ WORK ]

説明

COMMIT は現在のトランザクションをコミットします。トランザクションによって行われたすべての変更は、他の人にも見えるようになり、クラッシュが発生した場合でも耐久性が保証されます。

パラメーター

WORK

オプションのキーワード - 効果はありません。

ノート

トランザクションを中止するには、ROLLBACKを使用します。 トランザクション内でないときに COMMIT 発行 することは問題ありません。

現在のトランザクションをコミットし、すべての変更を永久にするには:

COMMIT;                                                                           

関連項目

ロールバック ロール バック SAVEPOINT

 

 

 

2.3.17                  CREATE DATABASE

CREATE DATABASE - 新しいデータベースを作成する

シノプシス

CREATE DATABASE name

説明

CREATE DATABASE は新しいデータベースを作成します。

データベースを作成するには、スーパーユーザーであるか、特別な CREATEDB 特権を 持っていなければなりません 。通常、作成者は新しいデータベースの所有者になります。 CREATEDB 特権を 持つ非スーパーユーザーは、 所有しているデータベースのみを作成できます。

新しいデータベースは、標準システムデータベース template1 複製することによって作成されます

パラメーター

name

作成するデータベースの名前。

ノート

CREATE DATABASE はトランザクションブロック内では実行できません。

データベースディレクトリを初期化できませんでした」という行に沿ったエラーは、データディレクトリ、フルディスク、またはその他のファイルシステムの問題に対する不十分なアクセス許可に関連している可能性があります。

新しいデータベースを作成するには:

CREATE DATABASE employees;

 

 

 

 

2.3.18                  CREATE [PUBLIC] DATABASE LINK

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)

関連項目

DROP DATABASE LINK

 

 

2.3.19                  CREATE DIRECTORY

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)

関連項目

DROP DIRECTORY

 

 

 

2.3.20                  CREATE FUNCTION

CREATE FUNCTION - 新しい関数を定義する

シノプシス

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

 

2.3.21                  CREATE INDEX

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;

関連項目

DROP INDEX ALTER INDEX

 

2.3.22                  CREATE MATERIALIZED VIEW

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 テーブル から取得された情報が含まれています

 

 

 

2.3.23                  CREATE PACKAGE

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;

関連項目

パッケージを削除する

 

 

2.3.24                  CREATE PACKAGE BODY

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

関連項目

パッケージの作成 パッケージの削除

 

2.3.25                  CREATE PROCEDURE

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 節。

 

関連項目

除外手順

 

2.3.26                  CREATE PROFILE

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;

 

 

 

2.3.27                  CREATE QUEUE

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

 

 

2.3.28                  CREATE QUEUE TABLE

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}.

TABLESPACE オプション のみ が強制される ことに注意してください 。他のすべては互換性のために受け入れられ、無視されます。 TABLESPACE 句を 使用 して、表を作成する表領域の名前を指定します。

説明

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}.

TABLESPACE オプション のみ が強制される ことに注意してください 。他のすべては互換性のために受け入れられ、無視されます。 TABLESPACE 句を 使用 して、表を作成する表領域の名前を指定します。

 

 

キュー表を作成する前に、ユーザー定義型を作成する必要があります。この型は、表内の列とデータ型を記述します。次のコマンドは、 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

 

 

2.3.29                  CREATE ROLE

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

 

 

 

 

2.3.30                  CREATE SCHEMA

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;

 

 

 

 

2.3.31                  CREATE SEQUENCE

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

 

2.3.32                  CREATE SYNONYM

CREATE SYNONYM - 新しいシノニムを定義する

シノプシス

CREATE [OR REPLACE] [PUBLIC] SYNONYM [ schema .] syn _ name
FOR object _ schema . object _ name [ @dblink_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_schemaobject_name ;

ノート

シノニムによって参照されるオブジェクトへのアクセスは、シノニムの現在のユーザの許可によって決定される。シノニム・ユーザーは、基礎となるデータベース・オブジェクトに対して適切な権限を持っていなければなりません。

enterprisedb という名前のスキーマ内 emp 表の シノニムを作成します

CREATE SYNONYM personnel FOR enterprisedb.emp;

関連項目

シノニムを捨てる

 

 

 

2.3.33                   CREATE TABLE

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 ( column_name [、...]) - テーブル制約

UNIQUE 制約は、表の1つの以上の別個の列のグループが一意の値だけを含むことができることを指定します。ユニークなテーブル制約の動作は、カラム制約の動作と同じで、複数のカラムにまたがる機能が追加されています。

ユニーク制約の目的のために、NULL値は等しいと見なされません。

それぞれのユニークなテーブル制約は、そのテーブルに対して定義された他の一意キー制約またはプライマリキー制約によって指定された列のセットとは異なる列のセットに名前を付ける必要があります。 (それ以外の場合は、同じ制約が2回表示されます)。

PRIMARY KEY - 列制約
PRIMARY KEY column_name [、...]) - テーブル制約

主キー制約は、テーブルの1つまたは複数の列に、一意の(重複しない)非NULL値のみが含まれることを指定します。技術的には、 PRIMARY KEY は単なる UNIQUE NOT NULL 組み合わせです が、主キーとして列のセットを識別すると、スキーマの設計に関するメタデータも提供されます。主キーとは、他のテーブルがこの列のセットを行の一意の識別子。

列制約または表制約のいずれであっても、表に対して指定できる主キーは1つのみです。

主キー制約は、同じテーブルに対して定義された一意制約によって指定された他の列セットとは異なる列セットに名前を付ける必要があります。

CHECK ( expression )

CHECK 句は、新規または更新された行が成功するには、挿入または更新操作のために満たさなければならないBoolean型の結果を生成する式を指定します。 TRUEまたは "unknown"と評価される式は成功します。挿入操作または更新操作のいずれかの行がFALSE結果を生成すると、エラー例外が発生し、挿入または更新によってデータベースが変更されません。列制約として指定された検査制約は、その列の値のみを参照する必要がありますが、表制約に現れる式は複数の列を参照することがあります。

現在、 CHECK 式にはサブクエリを含めることも、現在の行の列以外の変数を参照することもできません。

REFERENCES reftable [( refcolumn )] [ ON DELETE action ] - 列制約
FOREIGN KEY column [、...]) REFERENCES reftable [( refcolumn [、...])] [ ON DELETE action ] - テーブル制約

これらの句は、外部キー制約を指定します。このため、新しいテーブルの1つ以上の列のグループには、参照先テーブルの一部の行の参照された列の値と一致する値のみが含まれている必要があります。場合 refcolumn 省略されている、の主キー reftable 使用されています。参照先の列は、参照先の表の一意キー制約または主キー制約の列でなければなりません。

さらに、参照列のデータが変更されると、この表の列のデータに対して特定のアクションが実行されます。 ON DELETE 句は、参照表の参照行が削除されているときに実行するアクションを指定します。制約が遅延可能であっても、参照アクションを延期することはできません。各句には次のようなアクションがあります。

 

CASCADE

削除された行を参照する行を削除するか、または参照元列の値を参照先列の新しい値にそれぞれ更新します。

SET NULL

参照する列を NULL 設定し NULL

参照される列が頻繁に変更される場合は、外部キー列に関連付けられた参照アクションをより効率的に実行できるように、外部キー列にインデックスを追加することをお勧めします。

DEFERRABLE
NOT DEFERRABLE

これは、制約を延期できるかどうかを制御します。遅延可能でない制約は、すべてのコマンドの直後にチェックされます。遅延可能な制約のチェックは、トランザクションの終了時まで延期される場合があります( SET CONSTRAINTS コマンド)。 NOT DEFERRABLE がデフォルトです。現在、この句は外部キー制約のみで受け入れられます。他のすべての制約タイプは遅延可能ではありません。

INITIALLY IMMEDIATE
INITIALLY DEFERRED

制約が遅延可能な場合、この句は制約をチェックするデフォルトの時間を指定します。制約が 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;

関連項目

ALTER TABLE DROP TABLE

 

2.3.34                  CREATE TABLE AS

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 参照してください

 

 

2.3.35                  CREATE TRIGGER

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;

関連項目

DROP TRIGGER

 

 

2.3.36                  CREATE TYPE

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
NOT FINAL

オブジェクトタイプの場合、サブタイプをオブジェクトタイプから派生できるかどうかを指定します。 FINAL (オブジェクト型からサブタイプを派生させることはできません)がデフォルトです。

ため method_spec 、方法はサブタイプでオーバーライドすることができるかどうかを指定します。 NOT FINAL (サブタイプでメソッドがオーバーライドされる可能性があります)がデフォルトです。

INSTANTIABLE
NOT 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
STATIC

サブプログラムがオブジェクト・インスタンス上で操作する場合は、 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

関連項目

TYPE BODY DROP TYPEを作成する

 

 

2.3.37                  CREATE TYPE BODY

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
STATIC

サブプログラムがオブジェクト・インスタンス上で操作する場合は、 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 TYPE DROP TYPE

 

 

2.3.38                  CREATE USER

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;

関連項目

DROP USER

 

 

2.3.39                  CREATE USER|ROLE… PROFILE MANAGEMENT CLAUSES

CREATE USER|ROLE

シノプシス

CREATE USER|ROLE name [[WITH] option […]]

どこ option 、次の互換性の句を指定できます。

             PROFILE profile_name
          |  ACCOUNT {LOCK|UNLOCK}
          |  PASSWORD EXPIRE [AT ' timestamp ']

または 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 を使用してサーバーにログインできます

 

 

 

2.3.40                  CREATE VIEW

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;

関連項目

DROP VIEW

 

 

2.3.41                  DELETE

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;

関連項目

TRUNCATE

 

 

2.3.42                  DROP DATABASE LINK

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;

関連項目

CREATE DATABASE LINK

 

 

2.3.43                  DROP DIRECTORY

DROP DIRECTORY - ファイルシステムのディレクトリパスのディレクトリエイリアスを削除する

シノプシス

DROP DIRECTORY name

説明

DROP DIRECTORY は、 CREATE DIRECTORY コマンドで 作成されたファイルシステムディレクトリパスの既存のエイリアスを削除します 。このコマンドを実行するには、スーパーユーザーでなければなりません。

ディレクトリエイリアスが削除されると、対応する物理ファイルシステムディレクトリは影響を受けません。ファイルシステムディレクトリは、適切なオペレーティングシステムコマンドを使用して削除する必要があります。

パラメーター

name

削除されるディレクトリエイリアスの名前。

empdir というディレクトリエイリアスを削除し empdir

DROP DIRECTORY empdir;

関連項目

CREATE DIRECTORY

 

 

2.3.44                   DROP FUNCTION

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);

関連項目

CREATE FUNCTION

 

 

2.3.45                  DROP INDEX

DROP INDEX - インデックスを削除する

シノプシス

DROP INDEX name

説明

DROP INDEX は、データベースシステムから既存のインデックスを削除します。このコマンドを実行するには、スーパーユーザーまたはインデックスの所有者でなければなりません。オブジェクトがインデックスに依存する場合、エラーが発生し、インデックスは削除されません。

パラメーター

name

削除する索引の名前(オプションでスキーマ修飾名)。

このコマンドは、 name_idx というインデックスを削除します

DROP INDEX name_idx;

 

関連項目

ALTER INDEX CREATE INDEX

 

2.3.46                  DROP PACKAGE

DROP PACKAGE - パッケージを削除する

シノプシス

DROP PACKAGE [ BODY ] name

説明

DROP PACKAGE は既存のパッケージを削除します。このコマンドを実行するには、スーパーユーザーまたはパッケージの所有者でなければなりません。場合 BODY 指定され、パッケージ本体のみが削除されます-パッケージ仕様は削除されません。場合 BODY 省略され、パッケージ仕様部と本体の両方が削除されます。

パラメーター

name

削除するパッケージの名前(スキーマ修飾名でも可)。

このコマンドを実行すると、 emp_admin パッケージ が削除され ます。

DROP PACKAGE emp_admin;

関連項目

パッケージの作成 パッケージの作成

 

 

2.3.47                  DROP PROCEDURE

DROP PROCEDURE - プロシージャを削除する

シノプシス

DROP PROCEDURE name

説明

DROP PROCEDURE は、既存のプロシージャーの定義を除去します。このコマンドを実行するには、スーパーユーザーまたはプロシージャの所有者でなければなりません。

パラメーター

name

既存のプロシージャーの名前(スキーマ修飾名も可)。

次のコマンドは、 select_emp プロシージャを 削除し ます。

DROP PROCEDURE select_emp;

関連項目

プロシージャの作成

 

 

 

 

2.3.48                  DROP PROFILE

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 削除しないようにサーバーに指示します

 

 

2.3.49                  DROP QUEUE

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

 

 

2.3.50                  DROP QUEUE TABLE

Advanced Serverには、Oracleによって提供されていない追加の構文が DROP とともに含まれています QUEUE TABLE SQL コマンド。この構文は、 DBMS _ AQADM に関連して使用できます

DROP QUEUE TABLE - キューテーブルを削除します。

シノプシス

DROP 使用する QUEUE キューテーブルを削除する TABLE

DROP QUEUE TABLE [ IF EXISTS ] name [, ...]
[CASCADE | RESTRICT]

説明

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

 

 

2.3.51                  DROP SYNONYM

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;

 

2.3.52                  DROP ROLE

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

 

 

2.3.53                  DROP SEQUENCE

DROP SEQUENCE - シーケンスを削除する

シノプシス

DROP SEQUENCE name [, ...]

説明

DROP SEQUENCE はシーケンス番号ジェネレータを削除します。このコマンドを実行するには、スーパーユーザーまたはシーケンスの所有者でなければなりません。

パラメーター

name

シーケンスの名前(スキーマ修飾名も可)。

シーケンスを削除するには、 serial

DROP SEQUENCE serial;

関連項目

ALTER SEQUENCE CREATE SEQUENCE

 

 

2.3.54                  DROP TABLE

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
  (order_id int PRIMARY KEY, order_date date, …);

CREATE TABLE items
  (order_id REFERENCES orders, quantity int, …);

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 テーブルを。

関連項目

他の机 CREATE TABLE

 

 

2.3.55                  DROP TABLESPACE

DROP TABLESPACE - 表領域を削除する

シノプシス

DROP TABLESPACE tablespacename

説明

DROP TABLESPACE は、システムから表スペースを除去します。

表スペースは、所有者またはスーパーユーザーだけが削除できます。表スペースを削除するには、その前にすべてのデータベース・オブジェクトが空でなければなりません。現在のデータベース内のオブジェクトが表領域を使用していない場合でも、他のデータベースのオブジェクトが表領域に存在する可能性があります。

パラメーター

tablespacename

表スペースの名前。

システムから employee_space という 表領域を削除するに は、次のようにします。

DROP TABLESPACE employee_space;

関連項目

ALTER TABLESPACE

 

 

2.3.56                  DROP TRIGGER

DROP TRIGGER - トリガーを削除する

シノプシス

DROP TRIGGER name

説明

DROP TRIGGER は、関連付けられたテーブルからトリガを削除します。このコマンドは、スーパーユーザーまたはトリガーが定義されているテーブルの所有者が実行する必要があります。

パラメーター

name

削除するトリガーの名前。

トリガーを削除する emp_sal_trig

DROP TRIGGER emp_sal_trig;

関連項目

CREATE TRIGGER

 

 

2.3.57                  DROP TYPE

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

 

 

2.3.58                  DROP USER

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;

関連項目

CREATE USER ALTER USER

 

 

2.3.59                  DROP VIEW

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;

関連項目

CREATE VIEW

 

2.3.60                  EXEC

EXEC

シノプシス

EXEC function_name ['('[ argument _ list ]')']

説明

EXECUTE

パラメーター

procedure_name

procedure_name は(オプションでスキーマ修飾された)関数名です。

argument_list

argument_list は、関数が必要とする引数のコンマ区切りのリストを指定します。 argument_list 各メンバーは 、関数が期待する仮引数に対応することに 注意してください 。各仮引数は、 IN パラメーター、 OUT パラメーター、または INOUT パラメーターです。

EXEC ステートメントは、関数で必要な引数に応じて、いくつかのいずれかの形式を取ることがあります。

EXEC update_balance;
EXEC update_balance();
EXEC update_balance(1,2,3);

 

 

 

2.3.61                  GRANT

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 コマンド で受給者がユーザーかグループかを区別する必要はありません

 

 

2.3.62                  GRANT on Database Objects

この 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

使用可能なすべての特権を一度に付与します。

他のコマンドで必要な権限は、それぞれのコマンドのリファレンスページにリストされています。

 

 

2.3.63                  GRANT on Roles

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つは、目的の列のみを持つビューを作成し、そのビューに特権を与えることです。

emp 上のすべてのユーザーに挿入権限を付与します

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;

関連項目

REVOKE SET ROLE

 

 

2.3.64                  GRANT on System Privileges

この 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データベースと互換性のあるそれぞれのコマンドと機能的に同等です。

 

関連項目

リボーク アルターロール

 

 

2.3.65                  INSERT

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;

 

2.3.66                  LOCK

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 に関する限り、 すべてのロックモードは同じセマンティクスを持ちますが 、どのモードがどのモードと矛盾するかというルールが異なります。

 

2.3.67                  REVOKE

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;

関連項目

報酬 報酬を与える

 

 

2.3.68                  ROLLBACK

ROLLBACK - 現在のトランザクションを中断する

シノプシス

ROLLBACK [ WORK ]

説明

ROLLBACK は現在のトランザクションをロールバックし、トランザクションによって行われたすべての更新を破棄します。

パラメーター

WORK

オプションのキーワード - 効果はありません。

ノート

COMMIT 使用して 、トランザクションを正常に終了します。

トランザクション内でないときに ROLLBACK 発行 することは問題ありません。

すべての変更を中止するには:

ROLLBACK;

関連項目

コミット ロールバックからSAVEPOINTSAVEPOINT

 

 

2.3.69                  ROLLBACK TO 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;

関連項目

COMMIT ROLLBACK 、 SAVEPOINT

 

 

2.3.70                  SAVEPOINT

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

 

 

 

 

2.3.71                  SELECT

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 項を参照してください

 

2.3.71.1             FROM Clause

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)

 

2.3.71.2             WHERE Clause

オプションの WHERE 句の形式は次のとおりです。

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)

 

2.3.71.3             GROUP BY Clause

オプションの GROUP BY 句の形式は次のとおりです。

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)

 

2.3.71.4             HAVING Clause

オプションの 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)

2.3.71.5             SELECT List

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)

 

2.3.71.6             UNION Clause

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

 

2.3.71.7             INTERSECT Clause

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) として読み込まれ ます。

 

2.3.71.8             MINUS Clause

MINUS 句は、この一般的な形式があります:

select_statement MINUS select_statement

select_statement ORDER BY または FOR UPDATE 節の ない SELECT です。

MINUS 演算子は、左の結果である行の集合を計算 SELECT 文ではなく、右のいずれかの結果では。

MINUS の結果に 重複行は含まれません。

同じ SELECT ステートメント 内の 複数の MINUS 演算子は、 かっこで指示されていない限り、左から右に評価されます。 MINUS UNION と同じレベルでバインドされ ます。

 

2.3.71.9             CONNECT BY Clause

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 (または他の演算子)の 使用をサポートしていません

 

2.3.71.10          ORDER BY Clause

オプションの ORDER BY 句の形式は次のとおりです。

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)

 

2.3.71.11          DISTINCT Clause

SELECT ステートメントで DISTINCT 指定されている 場合は、 重複した行がすべて結果セットから DISTINCT され DISTINCT (重複する各グループから1つの行が保持されます)。 ALL キーワードは反対を指定:すべての行が保持されます。これがデフォルトです。

 

2.3.71.12          FOR UPDATE Clause

FOR UPDATE 句は次の形式をとります。

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 を指定し、別のセッションによってすでにロックされている行はスキップします。

 

 

 

2.3.72                  SET CONSTRAINTS

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 を使用して、トランザクション内の特定のポイントで制約のチェックを強制的に実行できます。

現時点では、外部キー制約のみがこの設定の影響を受けます。チェックとユニーク制約は、常に効果的に遅延されません。

 

 

ノート

このコマンドは、現在のトランザクション内の制約の動作のみを変更します。したがって、このコマンドをトランザクションブロックの外で実行すると、効果がないように見えます。

 

 

2.3.73                  SET ROLE

SET ROLE - 現在のセッションの現在のユーザーIDを設定する

シノプシス

SET ROLE { rolename | NONE }

説明

このコマンドは、現在の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;

ユーザー mary は自分のアイデンティティに戻ります。

SET ROLE NONE;

 

2.3.74                  SET TRANSACTION

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 それが実行するコマンドが記載されているものの中にある場合。これは、ディスクへのすべての書き込みを妨げるわけではない読み取り専用の高水準の概念です。

 

2.3.75                  TRUNCATE

TRUNCATE - テーブルを空にする

シノプシス

TRUNCATE TABLE name [DROP STORAGE]

説明

TRUNCATE は、表からすべての行をすばやく削除します。それは非修飾 DELETE と同じ効果を持ち ますが、実際にはテーブルをスキャンしないのでより高速です。これは大きなテーブルで最も便利です。

DROP STORAGE 句は互換性のために受け入れられますが、無視されます。

パラメーター

name

切り捨てられる表の名前(スキーマ修飾名も可)。

ノート

他のテーブルからのテーブルへの外部キー参照がある場合、 TRUNCATE は使用できません。このような場合に有効性を確認するには、テーブルスキャンが必要であり、そのポイント全体が1つのスキャンではありません。

TRUNCATE 、テーブルに存在する可能性のある ユーザ定義の ON DELETE トリガを実行しません。

テーブル bigtable

TRUNCATE TABLE bigtable;

関連項目

DROP VIEW DELETE

 

 

2.3.76                  UPDATE

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';

 

 

 

 

 

2.4      関数と演算子

Advanced Serverに は、組み込みデータ型のための多数の関数と演算子が用意されています。

2.4.1    Logical Operators

通常の論理演算子を使用できます。 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.4.2    Comparison Operators

次の表に、通常の比較演算子を示します。

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標準に準拠するように変更することを強くお勧めします

 

2.4.3    Mathematical Functions and Operators

数学演算子は、多くの 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 )

正接

 

 

 

 

2.4.4    String Functions and Operators

この節では、文字列値を調べて操作するための関数と演算子について説明します。この文脈の文字列には、タイプ 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

 

2.4.5    Pattern Matching String Functions

Advanced Serverは、 REGEXP _ COUNT REGEXP_INSTR および REGEXP_SUBSTR 関数を サポートしてい REGEXP 。これらの関数は、文字列内で正規表現で指定されたパターンを検索し、その文字列内のパターンの出現に関する情報を返します。パターンはPOSIXスタイルの正規表現でなければなりません。 POSIXスタイルの正規表現を構成する 詳細について は、コアのドキュメントを参照してください。

https://www.postgresql.org/docs/10/static/functions-matching.html

 

2.4.5.1  REGEXP_COUNT

REGEXP _ COUNT は文字列で正規表現を検索し、正規表現が出現する回数を返します。署名は次のとおりです。

INTEGER REGEXP_COUNT
(
srcstr TEXT,
pattern TEXT,
position DEFAULT 1
modifier DEFAULT NULL
)

パラメーター

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 出現は除外されます

 

2.4.5.2  REGEXP_INSTR

REGEXP _ INSTR は、POSIXスタイルの正規表現を文字列で検索します。この関数は、マッチした文字列内の位置を返します。署名は次のとおりです。

INTEGER 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,
)

パラメーター:

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 番目の位置から始まります。

 

2.4.5.3  REGEXP_SUBSTR

REGEXP _ SUBSTR 機能は、POSIX準拠の正規表現で指定されたパターンの文字列を検索します。 REGEXP_SUBSTR は、関数の呼び出しで指定されたパターンに一致する文字列を返します。関数のシグネチャは次のとおりです。

TEXT REGEXP_SUBSTR
(
srcstr TEXT,
pattern TEXT,
position INT DEFAULT 1,
occurrence INT DEFAULT 1,
modifier TEXT DEFAULT NULL,
subexpression INT DEFAULT 0
)

パラメーター:

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 返します

 

 

2.4.6    Pattern Matching Using the LIKE Operator

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.4.7    Data Type Formatting Functions

次の表に示す 高度なサーバー フォーマット機能は、強力な様々なデータタイプを変換するためのツールのセット(日付/時刻、整数、数値ポイントを、フローティング)フォーマット文字列に、特定のデータ型にフォーマット文字列から変換するために提供します。これらの関数はすべて共通の呼び出し規約に従います。最初の引数は書式設定される値で、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'

 

2.4.7.1  IMMUTABLE TO_CHAR(TIMESTAMP, format) Function

関数の 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.4.8    Date/Time Functions and Operators

表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

 

2.4.8.1  ADD_MONTHS

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)

 

2.4.8.2  EXTRACT

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)

 

2.4.8.3  MONTHS_BETWEEN

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)

 

2.4.8.4  NEXT_DAY

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)

 

2.4.8.5  NE W_TIME

NEW_TIMEの 関数は、1つのタイムゾーンから別の日付と時刻を変換します。 NEW_TIME は、 DATE 型の値を返します 。構文は次のとおりです。

NEW_TIME( DATEtime_zone1time_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)

 

 

2.4.8.6  ROUND

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)

 

2.4.8.7  TRUNC

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)

 

2.4.8.8  CURRENT DATE/TIME

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つのトランザクションに「現在の」時間の一貫した概念を持たせ、同じトランザクション内の複数の変更が同じタイムスタンプを持つようにすることです。他のデータベースシステムでは、これらの値をより頻繁に進めることがあります。

2.4.8.9  NUMTODSINTERVAL

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)

2.4.8.10             NUMTOYMINTERVAL

NUMTOYMINTERVAL 機能は、月の間隔ユニットを通じて年を含む時間間隔の数値を変換します。関数を呼び出すときは、結果セットに含める最小の小数間隔タイプを指定します。有効なインターバルタイプは YEAR MONTH です。

次の例では、数値を年と月を含む時間間隔に変換します。

SELECT numtoyminterval(100, ‘month’);

numtoyminterval

---------------

8 years 4 mons

(1 row)

 

次の例では、数値のみを含む時間間隔に変換します。

SELECT numtoyminterval(100, ‘year’);

numtoyminterval

---------------

100 years

(1 row)

 

 

2.4.9    Sequence Manipulation Functions

このセクションでは 、シーケンス・オブジェクトを操作するための Advanced Server の機能 について説明し ます。シーケンスオブジェクト(シーケンスジェネレータまたはシーケンスとも呼ばれます)は、 CREATE SEQUENCE コマンドで 作成される特別な単一行テーブルです 。通常、シーケンスオブジェクトは、テーブルの行に固有の識別子を生成するために使用されます。シーケンス関数は、シーケンスオブジェクトから連続したシーケンス値を取得するための簡単でマルチユーザーに安全なメソッドを提供します。

sequence .NEXTVAL

sequence .CURRVAL

sequence は、 CREATE SEQUENCE コマンドで シーケンスに割り当てられた識別子 です。次に、これらの機能の使用方法について説明します。

NEXTVAL

シーケンスオブジェクトを次の値に進め、その値を返します。これは原子的に行われます。複数のセッションが 同時に NEXTVAL 実行 しても、それぞれ異なるシーケンス値を安全に受信します。

CURRVAL

現在のセッションでこのシーケンスに対して NEXTVAL によって最後に取得された値を返します 。 ( このセッションでこのシーケンスに対して NEXTVAL が呼び出されたことがない 場合はエラーが報告 されます)。これはセッションローカル値を返す ため、現在のセッション以降に 他のセッションが NEXTVAL を実行したかどうかを予測できます

シーケンスオブジェクトがデフォルトパラメータで作成されている場合、 NEXTVAL 呼び出すと、1で始まる連続した値が返されます。その他の動作は、 CREATE SEQUENCE コマンド。

重要 :同じシーケンスから数値を取得する並行トランザクションのブロッキングを回避するため、 NEXTVAL 操作はロールバックされません。つまり、値がフェッチされると、 後で NEXTVAL 実行したトランザクションが 異常終了 した場合でも、値が使用されたとみなされます 。これは、中断されたトランザクションが 、割り当てられた値のシーケンスに 未使用の 「穴」を 残す可能性があることを意味し ます。

 

 

2.4.10                  Conditional Expressions

次のセクションでは、 Advanced Serverで 使用可能な SQL 準拠の条件式 について説明し ます

2.4.10.1             CASE

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;

2.4.10.2             COALESCE

COALESCE 関数がnullでない自身の最初の引数を返します。すべての引数がnullの場合にのみNullが返されます。

COALESCE( value [, value2 ] ... )

これは、表示またはそれ以上の計算のためにデータを取り出すときに、ヌル値のデフォルト値を代入するためによく使用されます。例えば:

SELECT COALESCE(description, short_description, '(none)') ...

CASE と同様に COALESCE は結果を判別する必要のない引数を評価しません。つまり、最初のNULL以外の引数の右側の引数は評価されません。この SQL 標準機能は 、他のデータベースシステムで使用されている NVL IFNULL 似た機能を提供し ます。

2.4.10.3             NULLIF

NULLIF 場合、関数はNULL値を返し value1 value2 等しいです。それ以外の場合は、 value1 返します

NULLIF( value1 , value2 )

上記の COALESCE とは逆の操作を行うために使用することができます

SELECT NULLIF(value1, '(none)') ...

value1 が(none)の 場合 はnullを返し、そうでない場合は value1 返し ます。

2.4.10.4             NVL

NVL 関数は、NULLでない自身の最初の引数を返します。 NVL は最初の式を評価します。その式が NULL 評価される場合 NVL は2番目の式を返します。

NVL( expr1 , expr2 )

戻り値の型は引数の型と同じです。すべての引き数は同じデータ型を持たなければなりません(または共通の型に強制可能でなければなりません)。 NVL 返す NULL すべての引数がある場合は NULL

次の例は、委託されていない従業員のボーナスを計算します。従業員が委託従業員の場合、この式はemployeesコミッションを返します。従業員が委託従業員でない場合(つまり、コミッションが NULL )、この式は給与の10%のボーナスを返します。

bonus = NVL(emp.commission, emp.salary * .10)

2.4.10.5             NVL2

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)

2.4.10.6             GREATEST and LEAST

GREATEST LEAST 関数は、式の任意の数のリストから、最大または最小値を選択します。

GREATEST( value [, value2 ] ... )

LEAST( value [, value2 ] ... )

式はすべて共通のデータ型に変換可能でなければなりません。これは結果の型になります。リスト内のNULL値は無視されます。すべての式がnullと評価された場合にのみ、結果はNULLになります。

GREATEST LEAST SQL標準にはないが、一般的な拡張である ことに注意してください

 

2.4.11                  Aggregate Functions

集計 関数は、入力値のセットから単一の結果値を計算します。組み込み集約関数は、次の表にリストされています。

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乗)

 

2.4.12                  Subquery Expressions

この項では、 Advanced Serverで 使用可能な SQL 準拠の副問合せ式 について説明し ます 。このセクションに記載されているすべての式はブール値( true / false )を 返し ます。

2.4.12.1             EXISTS

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)

2.4.12.2             IN

右側は括弧でくくられたサブクエリで、正確に1つの列を返す必要があります。左辺の式が評価され、副問合せ結果の各行と比較されます。 等しいサブクエリー行が見つかると IN の結果 TRUE ます。 等しい行が見つからない場合(副問合せが行を戻さない特殊な場合を含む)、 結果は FALSE

expression IN ( subquery )

左側の式が得られる場合、その注意 null 全く等しい右側の値と少なくとも一つの右側の行収率がない場合、または null の結果 IN 構築物があろう null ではない、 false 。これは、ヌル値のブール値の組み合わせに対するSQLの通常の規則に従います。

EXISTS 同様に 、サブクエリが完全に評価されると仮定することは賢明ではありません。

 

2.4.12.3             NOT IN

右側は括弧でくくられたサブクエリで、正確に1つの列を返す必要があります。左辺の式が評価され、副問合せ結果の各行と比較されます。 不等な副問い合わせ行だけが見つかった場合(副問い合わせが行を返さない特殊な場合を含む)、 NOT IN の結果 TRUE になります。 等しい行が見つかると、 結果は FALSE

expression NOT IN ( subquery )

左辺の式が null である場合、または等しい右辺値がなく、少なくとも1つの右辺が null もたらす 場合、 NOT IN 構文の 結果は true ではなく null なり null 。これは、ヌル値のブール値の組み合わせに対するSQLの通常の規則に従います。

EXISTS 同様に 、サブクエリが完全に評価されると仮定することは賢明ではありません。

 

2.4.12.4             ANY/SOME

右側は括弧でくくられたサブクエリで、正確に1つの列を返す必要があります。左辺の式が評価され、指定された演算子を使用して副問合せ結果の各行と比較されます。 真の結果が得られれば ANY の結果 TRUE ます。 真の結果が見つからない場合(サブクエリが行を返さない特殊な場合を含む)、 結果は FALSE

expression operator ANY ( subquery )

expression operator SOME ( subquery )

SOME ANY 同義語です IN = ANY と等価 です。

成功がなく、少なくとも1つの右辺 がオペレータの結果に対して null を返す場合、 ANY 構文の 結果は false ではなく null なることに注意してください 。これは、ヌル値のブール値の組み合わせに対するSQLの通常の規則に従います。

EXISTS 同様に 、サブクエリが完全に評価されると仮定することは賢明ではありません。

2.4.12.5             ALL

右側は括弧でくくられたサブクエリで、正確に1つの列を返す必要があります。ザ 左辺の式が評価され、指定された演算子を使用して副問合せ結果の各行と比較されます。 サブクエリが行を返さない特殊な場合も含めて、すべての行 TRUEALLの結果 TRUE になります。 偽の結果が見つかると、 結果は FALSE 比較 によってすべての行に対して false 返さ ない場合、 結果は null になり 、少なくとも1つの行に対して null 返され null

expression operator ALL ( subquery )

NOT IN <> ALL と同等 です。 EXISTS 同様に 、サブクエリが完全に評価されると仮定することは賢明ではありません。

3      Oracleカタログ・ビュー

Oracleカタログ・ビューは、 Oracleデータ・ディクショナリ・ビューと互換性のある方法でデータベース・オブジェクトに関する情報を提供します。

3.1      ALL_ALL_TABLES

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 です。

 

3.2      ALL_CONS_COLUMNS

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

制約の定義。

 

 

 

 

 

3.3      ALL_CONSTRAINTS

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

制約の定義。

 

3.4      ALL_DB_LINKS

ALL_DB_LINKS ビューには、現行のユーザーがアクセス可能なデータベース・リンクに関する情報を提供します。

Name

Type

Description

owner

TEXT

データベースリンクの所有者のユーザー名。

db_link

TEXT

名前 データベースリンクの

type

CHARACTER VARYING

リモートサーバーの種類。値は REDWOOD または EDB いずれかになります

username

TEXT

ログインしているユーザーのユーザー名。

host

TEXT

リモートサーバーの名前またはIPアドレス。

 

3.5      ALL_DIRECTORIES

ALL_DIRECTORIES ビューには、で作成したすべてのディレクトリについての情報提供 CREATE DIRECTORY コマンドを使用します。

Name

Type

Description

owner

CHARACTER VARYING(30)

ディレクトリの所有者のユーザー名。

directory_name

CHARACTER VARYING(30)

ディレクトリに割り当てられたエイリアス名。

directory_path

CHARACTER VARYING(4000)

ディレクトリへのパス。

 

3.6      ALL_IND_COLUMNS

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 (降順)に 設定し ます。互換性のためにのみ含まれています。

 

3.7      ALL_INDEXES

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 設定し ます。

 

3.8      ALL_JOBS

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 です。互換性のためにのみ提供されます。

 

3.9      ALL_OBJECTS

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 です。

 

3.10 ALL_PART_KEY_COLUMNS

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など

 

 

 

 

 

 

 

3.11 ALL_PART_TABLES

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

 

 

3.12 すべてのポリシー

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 設定し ます。

 

3.13 ALL_QUEUES

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

 

3.14 ALL_QUEUE_TABLES

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 は、そうでないことを示します。

 

3.15 ALL_SEQUENCES

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

ディスクに保存された最後のシーケンス番号の値。

 

3.16 ALL_SOURCE

ALL_SOURCE 関数、プロシージャ、トリガ、パッケージの仕様、およびパッケージ本体:ビューには、次のプログラムタイプのソースコードのリストを提供します。

Name

Type

Description

owner

TEXT

プログラムの所有者のユーザー名。

schema_name

TEXT

プログラムが属するスキーマの名前。

name

TEXT

プログラムの名前。

type

TEXT

プログラムのタイプ - 可能な値は FUNCTION PACKAGE PACKAGE BODY PROCEDURE 、および TRIGGER です。

line

INTEGER

与えられたプログラムに対するソースコードの行番号。

text

TEXT

ソースコードの行。

 

 

 

 

 

3.17 ALL_SUBPART_KEY_COLUMNS

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など

 

3.18 ALL_SYNONYMS

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

関連するデータベースリンクの名前。

 

 

 

 

 

 

 

3.19 ALL_TAB_COLUMNS

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可能かどうか。可能な値は次のとおりです。
Y - 列はNULL可能です。 N - 列はnullを許可しません。

column_id

NUMERIC

表またはビュー内の列の相対位置。

data_default

CHARACTER VARYING

列に割り当てられたデフォルト値。

 

 

 

 

 

 

 

 

 

 

 

 

 

3.20 ALL_TAB_PARTITIONS

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

パーティションバッキングテーブルの名前。

 

3.21 ALL_TAB_SUBPARTITIONS

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

サブパーティションのバッキングテーブルの名前。

 

3.22 ALL_TABLES

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 です。

 

3.23 ALL_TRIGGERS

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コマンド。

 

 

 

3.24 AL L_TYPES

ALL_TYPES ビューには、現在のユーザーが使用できるオブジェクトの種類についての情報を提供します。

Name

Type

Description

owner

TEXT

オブジェクト型の所有者。

schema_name

TEXT

型が定義されているスキーマの名前。

type_name

TEXT

型の名前。

type_oid

OID

型のオブジェクト識別子(OID)。

typecode

TEXT

型の型コードです。可能な値は次のとおりです。

OBJECT

COLLECTION

OTHER

attributes

INTEGER

型の属性の数。

 

3.25 全てのユーザー

ALL_USERS ビューには、すべてのユーザー名に関する情報を提供します。

Name

Type

Description

username

TEXT

ユーザーの名前。

user_id

OID

ユーザーに割り当てられている数値ユーザーID。

created

TIMESTAMP WITHOUT TIME ZONE

互換性のためにのみ含まれています。常に NULL です。

 

 

 

 

 

 

 

 

 

3.26 ALL_VIEW_COLUMNS

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

列に割り当てられたデフォルト値。

 

3.27 ALL_VIEWS

ALL_VIEWS ビューには、すべてのユーザー定義のビューについての情報を提供します。

Name

Type

Description

owner

TEXT

ユーザー名 ビューの所有者の

schema_name

TEXT

ビューが属するスキーマの名前。

view_name

TEXT

ビューの名前。

text

TEXT

SELECT ビューを定義する声明。

 

 

 

 

 

 

3.28 DBA_ALL_TABLES

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 です。

 

3.29 DBA_CONS_COLUMNS

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

制約の定義。

 

 

 

 

 

 

 

 

3.30 DBA_CONSTRAINTS

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

制約の定義。

 

3.31 DBA_DB_LINKS

DBA_DB_LINKS ビューは、データベース内のすべてのデータベース・リンクに関する情報を提供します。

Name

Type

Description

owner

TEXT

データベースリンクの所有者のユーザー名。

db_link

TEXT

データベースリンクの名前。

type

CHARACTER VARYING

リモートサーバーの種類。値は REDWOOD または EDB いずれかになります

username

TEXT

ログインしているユーザーのユーザー名。

host

TEXT

リモートサーバーの名前またはIPアドレス。

 

3.32 DBA_DIRECTORIES

DBA_DIRECTORIES ビューには、で作成したすべてのディレクトリについての情報提供 CREATE DIRECTORY コマンドを使用します。

Name

Type

Description

owner

CHARACTER VARYING(30)

ディレクトリの所有者のユーザー名。

directory_name

CHARACTER VARYING(30)

ディレクトリに割り当てられたエイリアス名。

directory_path

CHARACTER VARYING(4000)

ディレクトリへのパス。

 

3.33 DBA_IND_COLUMNS

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 (降順)に 設定し ます。互換性のためにのみ含まれています。

 

3.34 DBA_INDEXES

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 設定し ます。

3.35 DB A_JOBS

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 です。互換性のためにのみ提供されます。

 

3.36 DBA_OBJECTS

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 です。

 

3.37 DBA_PART_KEY_COLUMNS

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など

 

 

 

 

 

 

 

3.38 DBA_PART_TABLES

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

3.39 DBA_POLICIES

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 設定し ます。

 

 

 

 

 

 

3.40 DBA_PROFILES

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 です。

 

 

3.41 DBA_QUEUES

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

 

3.42 DBA_QUEUE_TABLES

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 は、そうでないことを示します。

 

3.43 DBA_ROLE_PRIVS

DBA_ROLE_PRIVS ビューは、ユーザーに付与されているすべての役割についての情報を提供します。ユーザが付与されたロールごとに行が作成されます。

Name

Type

Description

grantee

TEXT

役割が付与されたユーザー名。

granted_role

TEXT

権限受領者に付与されたロールの名前。

admin_option

TEXT

役割がadminオプションで許可されている場合は YES それ以外の場合 NO

default_role

TEXT

権限受領者がセッションを作成するときにロールが使用可能になっている場合は YES です。

 

3.44 DBA_ROLES

DBA_ROLES 眺めはですべての役割についての情報を提供して NOLOGIN 属性(グループ)。

Name

Type

Description

role

TEXT

NOLOGIN 属性 を持つロールの名前、 つまりグループ。

password_required

TEXT

互換性のためにのみ含まれています。常に N

 

 

3.45 DBA_SEQUENCES

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

ディスクに保存された最後のシーケンス番号の値。

 

3.46 DBA_SOURCE

DBA_SOURCE ビューは、データベース内のすべてのオブジェクトのソースコードリストを提供します。

Name

Type

Description

owner

TEXT

プログラムの所有者のユーザー名。

schema_name

TEXT

プログラムが属するスキーマの名前。

name

TEXT

プログラムの名前。

type

TEXT

プログラムのタイプ - 可能な値は FUNCTION PACKAGE PACKAGE BODY PROCEDURE 、および TRIGGER です。

line

INTEGER

与えられたプログラムに対するソースコードの行番号。

text

TEXT

ソースコードの行。

 

 

3.47 DBA_SUBPART_KEY_COLUMNS

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など

 

3.48 DBA_SYNONYMS

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

関連するデータベースリンクの名前。

 

 

 

 

 

 

3.49 DBA_TAB_COLUMNS

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可能かどうか - 可能な値は次のとおりです。
Y - 列はNULL可能です。 N - 列はnullを許可しません。

column_id

NUMERIC

表またはビュー内の列の相対位置。

data_default

CHARACTER VARYING

列に割り当てられたデフォルト値。

 

 

 

 

 

 

 

 

 

 

3.50 DBA_TAB_PARTITIONS

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

パーティションバッキングテーブルの名前。

 

3.51 DBA_TAB_SUBPARTITIONS

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

サブパーティションのバッキングテーブルの名前。

 

3.52 DBA_TABLES

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 です。

 

3.53 DBA_TRIGGERS

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コマンド。

 

 

3.54 DB A_TYPES

DBA_TYPES ビューは、データベース内のすべてのオブジェクトタイプに関する情報を提供します。

Name

Type

Description

owner

TEXT

オブジェクト型の所有者。

schema_name

TEXT

型が定義されているスキーマの名前。

type_name

TEXT

型の名前。

type_oid

OID

型のオブジェクト識別子(OID)。

typecode

TEXT

型の型コードです。可能な値は次のとおりです。

OBJECT

COLLECTION

OTHER

attributes

INTEGER

型の属性の数。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.55 DBA_USERS

DBA_USERS ビューには、データベースのすべてのユーザーに関する情報を提供します。

Name

Type

Description

username

TEXT

ユーザーのユーザー名。

user_id

OID

ユーザーのID番号。

password

CHARACTER VARYING(30)

ユーザーのパスワード(暗号化された)。

account_status

CHARACTER VARYING(32)

アカウントの現在のステータス。可能な値は次のとおりです。

OPEN
EXPIRED
EXPIRED(GRACE)
EXPIRED & LOCKED

EXPIRED & LOCKED(TIMED)
EXPIRED(GRACE) & LOCKED
EXPIRED(GRACE) & LOCKED(TIMED)
LOCKED
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 です。

 

 

 

 

 

3.56 DBA_VIEW_COLUMNS

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可能かどうか - 可能な値は次のとおりです。
Y - 列はNULL可能です。 N - 列はnullを許可しません。

column_id

NUMERIC

ビュー内の列の相対位置。

data_default

CHARACTER VARYING

列に割り当てられたデフォルト値。

 

3.57 DBA_VIEWS

DBA_VIEWS ビューは、データベース内のすべてのビューについての情報を提供します。

Name

Type

Description

owner

TEXT

ビューの所有者のユーザー名。

schema_name

TEXT

ビューが属するスキーマの名前。

view_name

TEXT

ビューの名前。

text

TEXT

ビューを定義する SELECT ステートメント のテキスト

 

 

 

 

 

3.58 USER_ALL_TABLES

USER_ALL_TABLES ビューには、現在のユーザーが所有するすべてのテーブルに関する情報を提供します。

Name

Type

Description

schema_name

TEXT

表が属するスキーマの名前。

table_name

TEXT

の名前 テーブル。

tablespace_name

TEXT

デフォルトの表領域以外の場合に表が存在する表領域の名前。

status

CHARACTER VARYING(5)

互換性のためにのみ含まれています。常に VALID 設定されてい ます。

temporary

TEXT

テーブルが一時的な場合は Y です。 テーブルが永続的な場合は N です。

3.59 USER_CONS_COLUMNS

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

制約の定義。

 

 

 

 

 

 

 

 

 

3.60 USER_CONSTRAINTS

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

制約の定義。

 

3.61 USER_DB_LINKS

USER_DB_LINKS ビューには、現在のユーザーが所有するすべてのデータベース・リンクに関する情報を提供します。

Name

Type

Description

db_link

TEXT

データベースリンクの名前。

type

CHARACTER VARYING

リモートサーバーの種類。値は REDWOOD または EDB いずれかになります

username

TEXT

ログインしているユーザーのユーザー名。

password

TEXT

リモートサーバーでの認証に使用されるパスワード。

host

TEXT

リモートサーバーの名前またはIPアドレス。

3.62 USER_IND_COLUMNS

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 (降順)に 設定し ます。互換性のためにのみ含まれています。

 

3.63 USER_INDEXES

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 設定し ます。

 

3.64 米国 ER_JOBS

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 です。互換性のためにのみ提供されます。

 

3.65 USER_OBJECTS

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

3.66 USER_PART_KEY_COLUMNS

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など

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.67 USER_PART_TABLES

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

3.68 USER_POLICIES

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 設定し ます。

 

 

 

3.69 USER_QUEUES

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

 

3.70 USER_QUEUE_TABLES

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 は、そうでないことを示します。

 

3.71 USER_ROLE_PRIVS

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。

 

3.72 USER_SEQUENCES

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

ディスクに保存された最後のシーケンス番号の値。

 

 

3.73 USER_SOURCE

USER_SOURCE ビューは、現行のユーザーが所有するすべてのプログラムについての情報を提供します。

Name

Type

Description

schema_name

TEXT

プログラムが属するスキーマの名前。

name

TEXT

プログラムの名前。

type

TEXT

タイプ プログラム - 可能な値は FUNCTION PACKAGE PACKAGE BODY PROCEDURE 、および TRIGGER です。

line

INTEGER

与えられたプログラムに対するソースコードの行番号。

text

TEXT

ソースコードの行。

 

3.74 USER_SUBPART_KEY_COLUMNS

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など

 

3.75 USER_SYNONYMS

USER_SYNONYMS ビューには、現在のユーザーが所有するすべての同義語に関する情報を提供します。

Name

Type

Description

schema_name

TEXT

シノニムが存在するスキーマの名前。

synonym_name

TEXT

同義語の名前。

table_owner

TEXT

シノニムが定義されている表の所有者のユーザー名。

table_schema_name

TEXT

表が存在するスキーマの名前。

table_name

TEXT

シノニムが定義されている表の名前。

db_link

TEXT

関連するデータベースリンクの名前。

 

3.76 USER_TAB_COLUMNS

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

列に割り当てられたデフォルト値。

 

 

 

 

 

 

 

 

 

 

 

 

 

3.77 USER_TAB_PARTITIONS

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

パーティションバッキングテーブルの名前。

 

3.78 USER_TAB_SUBPARTITIONS

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

パーティションバッキングテーブルの名前。

 

 

3.79 USER_TABLES

USER_TABLES 現在のユーザーが所有するすべての表に関する情報が表示されます。

Name

Type

Description

schema_name

TEXT

表が属するスキーマの名前。

table_name

TEXT

テーブルの名前。

tablespace_name

TEXT

デフォルトの表領域以外の場合に表が存在する表領域の名前。

status

CHARACTER VARYING(5)

互換性のためにのみ含まれています。常に VALID 設定されてい ます。

temporary

CHARACTER(1)

Y テーブルが一時的な場合。 テーブルが一時的でない場合は N です。

 

3.80 USER_TRIGGERS

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コマンド。

 

 

 

3.81 USER_TYPES

USER_TYPES ビューには、現在のユーザーが所有するすべてのオブジェクトタイプに関する情報を提供します。

Name

Type

Description

schema_name

TEXT

型が定義されているスキーマの名前。

type_name

TEXT

型の名前。

type_oid

OID

型のオブジェクト識別子(OID)。

typecode

TEXT

型の型コードです。可能な値は次のとおりです。

OBJECT

COLLECTION

OTHER

attributes

INTEGER

型の属性の数。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.82 USER_USERS

USER_USERS ビューには、現在のユーザーに関する情報を提供します。

Name

Type

Description

username

TEXT

ユーザーのユーザー名。

user_id

OID

ユーザーのID番号。

account_status

CHARACTER VARYING(32)

アカウントの現在のステータス。可能な値は次のとおりです。

OPEN
EXPIRED
EXPIRED(GRACE)
EXPIRED & LOCKED

EXPIRED & LOCKED(TIMED)
EXPIRED(GRACE) & LOCKED
EXPIRED(GRACE) & LOCKED(TIMED)
LOCKED
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

 

 

 

 

 

3.83 USER_VIEW_COLUMNS

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

列に割り当てられたデフォルト値。

 

3.84 USER_VIEWS

USER_VIEWS ビューには、現在のユーザーが所有するすべてのビューについての情報を提供します。

Name

Type

Description

schema_name

TEXT

ビューが存在するスキーマの名前。

view_name

TEXT

ビューの名前。

text

TEXT

SELECT ビューを定義する声明。

 

3.85 V $ VERSION

V$VERSION ビューでは、製品の互換性に関する情報を提供します。

Name

Type

Description

banner

TEXT

製品の互換性情報を表示します。

 

3.86 PRODUCT_COMPONENT_VERSION

PRODUCT_COMPONENT_VERSION ビューは、製品のバージョンの互換性に関するバージョン情報を提供します。

Name

Type

Description

product

CHARACTER VARYING(74)

製品の名前。

version

CHARACTER VARYING(74

製品のバージョン番号。

status

CHARACTER VARYING(74)

互換性のために含まれています。常に Available です。

 

4      システムカタログテーブル

以下のシステムカタログ表には、データベースオブジェクトの定義が含まれています。システムテーブルのレイアウトは変更される可能性があります。システムテーブルに格納されている情報に依存するアプリケーションを作成する場合は、既存のカタログビューを使用するか、カタログビューを作成してアプリケーションをシステムテーブルの変更から分離することが賢明です。

4.1      デュアル

dual は、Oracleデータベースとの互換性のために提供される単一行、単一列の表です。

Column

Type

Modifiers

Description

dummy

VARCHAR2(1)

 

互換性のためにのみ提供されます。

 

4.2      edb_dir

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[]

 

どのユーザーがエイリアスにアクセスできるかを決定するアクセス制御リスト。

 

4.3      edb_password_history

edb _ password_history 表は、各パスワード変更のために1行が含まれます。この表は、クラスタ内のすべてのデータベースで共有されます。

Column

Type

References

Description

passhistroleid

oid

pg_authid.oid

ロールのID。

passhistpassword

text

 

md5暗号化形式のロールパスワード。

passhistpasswordsetat

timestamptz

 

パスワードが設定された時刻。

 

4.4      edb_policy

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にリストされている列の列番号。

 

4.5      edb_profile

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。

 

4.6      edb_variable

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

変数がパッケージ内で宣言された順序。

 

4.7      pg_synonym

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

 

参照されるオブジェクトが定義されているデータベースリンクの(オプションの)名前。

 

 

 

 

4.8      product_component_version

product _ component _ version テーブルは、特徴の互換性についての情報を含みます。アプリケーションはインストール時または実行時にこのテーブルを照会して、このデプロイメントでアプリケーションで使用される機能が使用可能であることを確認できます。

Column

Type

Description

product

character varying (74)

製品の名前。

version

character varying (74)

製品のバージョン番号。

status

character varying (74)

リリースのステータス。

 

5      謝辞

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つの段落がすべてのコピーに記載されていれば、無償で、書面による合意なしに、本ソフトウェアおよびそのドキュメンテーションを使用、複製、改変、配布することが許可されます。

いかなる場合においても、カリフォルニア大学は、カリフォルニア大学が実施していたとしても、ソフトウェアおよびその文書の使用に起因する損害を含む、直接的、間接的、偶発的、派生的、派生的損害に対する賠償責任を負わないものとしますそのような損害の可能性を知らされた。

カリフォルニア州立大学は、商品性および特定目的への適合性の黙示的な保証を含む(ただしこれらに限定されない)いかなる保証も特に断ります。本契約に基づいて提供される本ソフトウェアは、現状のままであり、カリフォルニア州立大学は、保守、サポート、更新、拡張または改変を提供する義務を負いません。