Oracle連携時の取得定義の構文について説明します。
記述形式は、以下の表記方法により構文を示しています。
< >
構文を構成する要素の名前を示します。ある要素は、さらに他の要素によって詳細に定義されることがあります。
:: =
この記号の左側の要素が、右側の要素によって定義されることを示します。
[ ]
省略可能な要素を示します。
{ }
要素のまとまりを示します。また、{}内に書かれているいくつかの要素のうちの1つを選択することを示す場合にも使用します。選択できる要素は | で区切って記述します。
|
縦棒の後ろに続く要素が、縦棒の前の要素の代わりに記述できることを示します。
…
前の要素が繰り返されることを示します。この記号が{}で囲まれた形式の部分の直後に記述されている場合は、{ }で囲まれた部分の繰り返しを示します。
( )
構文の表記記号ではなく、構文を構成する文字の1つです。示されている位置に正しく記述する必要があります。
また、記述形式だけでは表現できない内容については構文規則で、指定値の説明については一般規則で補足します。
記述形式
<取得定義>:: =
LOGFMT <取得定義名>
[ <取得対象情報>… ]
[ <ジャーナル・チェックポイント情報> ]
[ <コメント> ] ;
<取得対象情報>:: =
{ <取得対象詳細情報> | <システム取得項目情報> }
<取得対象詳細情報>:: =
TABLE <テーブル識別情報>
( <列情報> [ { , <列情報> } … ] )
<システム取得項目情報>:: =
SYSITEM <システム取得項目> [ { , <システム取得項目> } … ]
<ジャーナル・チェックポイント情報>:: =
CHECKPOINT <ジャーナル・チェックポイント名> [ { , <ジャーナル・チェックポイント名> } … ]
<コメント>:: =
COMMENT <コメント文>
<テーブル識別情報>:: =
<スキーマ名>.<テーブル名>
<列情報>:: =
<項目名> : <列名> <データ型> [ <列編集情報> ]
<列編集情報>:: =
CONV = ( <列編集指示> [ { , <列編集指示> } … ] )
構文規則
取得定義名は、TJNL内で一意でなければなりません。
項目名は、取得定義内で一意でなければなりません。
取得定義内で同一列を取得対象として複数指定することはできません。
取得定義内で同一ジャーナル・チェックポイントを複数指定することはできません。
取得定義の追加および変更を行う場合、<取得対象詳細情報>を省略することはできません。
<取得対象詳細情報>には、1つ以上の<列情報>を含めなくてはなりません。
一般規則
取得定義名には、取得定義を識別するための任意の名前を指定します。
テーブル識別情報には、取得対象となるスキーマの名前、テーブルの名前を指定します。スキーマの名前、テーブルの名前は、Oracleに定義するスキーマ名、テーブル名を指定します。
列名には、取得対象となる列の名前を指定します。列の名前は、Oracleに定義する列名を指定します。
データ型には、取得対象となる列のデータ型を指定します。データ型は、Oracleに定義するデータ型を指定します。
項目名には、取得対象列を識別するための任意の名前を指定します。
システム取得項目情報を省略した場合、システム取得項目は取得されません。
ジャーナル・チェックポイント名には、配付を要求するジャーナル・チェックポイントの名前を指定します。
ジャーナル・チェックポイント情報を省略した場合、ジャーナル・チェックポイントの配付は要求されません。
コメント文には、取得定義に対する任意の説明文を指定します。
記述形式
<取得定義名>:: =
<TJNL識別子>
<項目名>:: =
<Oracle識別子>
<スキーマ名>:: =
<Oracle識別子>
<テーブル名>:: =
<Oracle識別子>
<列名>:: =
<Oracle識別子>
{ <TJNL識別子> [ <ワイルドカード> ] }
| <ワイルドカード>
<コメント文>:: =
--構文規則を参照してください
構文規則
取得定義名は、英字で始まる必要があります。
取得定義名を構成する文字数は12バイト以内です。
テーブル名、スキーマ名、列名、項目名を構成する文字数は30バイト以内です。
コメント文には、二重引用符(”)で囲んだ文字列を指定します。コメント文中に二重引用符(”)を使用することはできません。
コメント文を構成する文字数は127バイト以内です。
ジャーナル・チェックポイント名を構成する文字数は32バイト以内です。
キーワードを取得定義名、ジャーナル・チェックポイント名として使用する場合には、キーワードを二重引用符(”)で囲みます。キーワードの種類については、"表B.39 キーワード一覧"を参照してください。
一般規則
ジャーナル・チェックポイント名にワイルドカードのみを指定した場合、すべてのジャーナル・チェックポイントの配付を要求します。
ジャーナル・チェックポイント名にワイルドカードを使用した場合、ワイルドカードは、任意の1文字以上の文字となり、一致するジャーナル・チェックポイントの配付を要求します。
記述形式
<トークン>::=
<非区切りトークン>
| <区切りトークン>
<非区切りトークン>::=
<Oracle識別子>
| <TJNL識別子>
| <キーワード>
<キーワード>::=
--構文規則を参照してください
<Oracle識別子>::=
<通常識別子>
| <区切り識別子>
<通常識別子>:: =
<識別子体>
| <拡張識別子>
| <各国語文字識別子>
<識別子体>:: =
<英字> [ { <下線> | <英字または数字> } … ]
<英字または数字>:: =
<英字>
| <数字>
<拡張識別子>:: =
<拡張先頭> [ { <下線> | <拡張文字または数字> } … ]
<拡張先頭>:: =
<拡張文字>
| <英字>
<拡張文字または数字>:: =
<英字>
| <数字>
| <拡張文字>
<各国語文字識別子>::=
<各国語文字> [ <各国語文字>… ]
<区切り識別子>:: =
”<識別子体>”
<TJNL識別子>:: =
{ <英字> | <数字> | <下線> | <アットマーク> } …
<区切りトークン>:: =
,| ( | ) | . | : | ;
<分離記号>:: =
{ <注釈>|<空白> } …
<注釈導入子>:: =
--
<注釈>:: =
-- 構文規則を参照してください
構文規則
すべてのトークンの後ろに分離記号を指定できます。非区切りトークンの後ろには区切りトークンまたは分離記号を指定することが必要です。
キーワードをOracle識別子として使用する場合には、キーワードを二重引用符(”)で囲みます。キーワードの種類については、"表B.39 キーワード一覧"を参照してください。キーワードは英大文字と英小文字が区別されます。
各国語文字識別子に指定する各国語文字のコードは、自システムの文字コード系のコードセット1(2バイト)です。OSの文字コードがUNICODEの場合、各国語文字はUNICODEの仕様に従います。
各国語文字識別子に、各国語文字の空白は含められません。
各国語文字識別子の英小文字と英大文字は区別されません。
Oracle識別子を二重引用符(”)で囲んだ場合には英小文字と英大文字は区別されます。Oracle識別子を二重引用符(”)で囲まずに英小文字を指定した場合、英大文字に変換して扱います。ただし、各国語文字の変換は行いません。また、各国語文字の英小文字と英大文字は等価と扱いません。
空白は、ASCIIコードの0x09~0x0dと0x20です。
注釈には、注釈導入子で始まる文字列を指定します。
注釈は、任意の場所に指定できます。注釈導入子を指定した位置から、その行の終わりまでが注釈となります。1行すべてが注釈でもかまいません。
記述形式
<数字>::=
0|1|2|3|4|5|6|7|8|9
<英字>::=
<英大文字>
|<英小文字>
<英大文字>::=
A|B|C|D|E|F|G|H|I|J|K|L|M
|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<英小文字>::=
a|b|c|d|e|f|g|h|i|j|k|l|m
|n|o|p|q|r|s|t|u|v|w|x|y|z
<拡張文字>::=
$|#
<各国語文字>::=
-- 構文規則を参照してください
<下線> :: =
_
<アットマーク>:: =
@
<ワイルドカード>:: =
*
<マイナス符号>:: =
-
構文規則
各国語文字は、日本語の文字を表します。
各国語文字のコードは、自システムの文字コード系のコードセット1(2バイト)です。OSの文字コードがUNICODEの場合、各国語文字はUNICODEの仕様に従います。
記述形式
<データ型>:: =
<文字データ型>
|<NUMBERデータ型>
|<日時データ型>
|<透過文字列型>
<文字データ型>:: =
CHAR[(<長さ>)]
|VARCHAR2(<長さ>)
|NCHAR[(<長さ>)]
|NVARCHAR2(<長さ>)
<NUMBERデータ型>::=
NUMBER(<精度>[,<位取り>])
<日時データ型>::=
DATE
<透過文字列型>:: =
BINARY(<長さ>)
<長さ>::=
<符号なし整数>
<精度>::=
<符号なし整数>
<位取り>::=
<符号なし整数>
|<負整数>
構文規則
長さ、精度、および位取りの最小値、最大値、および省略値を"表B.36 長さ、精度および位取りの最小値、最大値および省略値"に示します。
要素指定 | 対象項目 | 最小値 | 最大値 | 省略値 |
---|---|---|---|---|
CHAR(n) | n:長さ | 1 | 2000 | 1 |
VARCHAR2(n) | n:長さ | 1 | 4000 | なし |
NCHAR(n) | n:長さ | 1 | 1000 | 1 |
NVARCHAR2(n) | n:長さ | 1 | 2000 | なし |
NUMBER(p) | p:精度 | 1 | 10 | なし |
NUMBER(p,q) | p:精度 | 1 | 18 | なし |
q:位取り | 0(注1) | p(注2) | なし | |
BINARY(n) | n:長さ(注3) | 1 | 32000 | なし |
注1)OracleではNUMBER(p)とNUMBER(p,0)は等価ですが、TJNLではメッセージへの格納方式が異なります。
注2)精度を超えることはできません
注3)バイト数を指定します。
一般規則
<文字データ型>のうち、NCHARおよびNVARCHAR2については、JIS X 201の範囲のデータをジャーナルとして取得することはできません。
精度に10、かつ、位取りを省略した<NUMBERデータ型>の列を取得定義に指定した場合、-231以上231-1以下のデータのみジャーナルとして取得されます。
<透過文字列型>を指定した列は、BLOB型としてOracleに定義する必要があります。
<透過文字列型>の列を取得定義に指定した場合、データ長が取得定義に指定した長さ以下のデータのみジャーナルとして取得されます。
記述形式
<列編集指示>:: =
SIGN(OFF) | TYPE(DECIMAL) | SIZE(長さ)
<長さ>::=
<符号なし整数>
構文規則
同一の列編集指示を複数指定することはできません。
長さの最小値、最大値を"表B.37 長さの最小値、最大値"に示します。
属性 | データ型 | 最小値 | 最大値 |
---|---|---|---|
固定長文字列 | CHAR | 1 | 6000 |
可変長文字列 | VARCHAR2 | 1 | 12000 |
一般規則
列編集指示の指定可否を"表B.38 列編集指示の指定可否"に示します。
属性 | データ型 | 列編集指示の指定可否 | ||
---|---|---|---|---|
SIGN(OFF) | TYPE(DECIMAL) | SIZE(長さ) | ||
固定長文字列 | CHAR | × | × | ○ |
可変長文字列 | VARCHAR2 | × | × | ○ |
各国語固定長文字列 | NCHAR | × | × | × |
各国語可変長文字列 | NVARCHAR2 | × | × | × |
外部10進数 | NUMBER(p,q) | ○ | ○ | × |
2進整数 | NUMBER(p) | × | × | × |
日付 | DATE | × | × | × |
透過文字列 | BLOB | × | × | × |
○:指定可
×:指定不可
記述形式
<システム取得項目>:: =
<全システム取得項目>
| { <更新資源名>|<格納構造名>|<時刻>|<トランザクション識別子>
| <トランザクション状態>|<DB種別>|<DB操作> }
<全システム取得項目>:: =
TJNLSYSALL
<更新資源名>:: =
TJNLRESOURCE
<格納構造名>:: =
TJNLSTORAGE
<時刻>:: =
TJNLTIME
TJNLTRNID
<トランザクション状態>:: =
TJNLSTS
<DB種別>:: =
TJNLDBKIND
<DB操作>:: =
TJNLDBOP
一般規則
<全システム取得項目>を指定した場合、以下の順序で各システム取得項目が展開されます。
a) <更新資源名>
b) <格納構造名>
c) <時刻>
d) <トランザクション識別子>
e) <トランザクション状態>
f) <DB種別>
g) <DB操作>
システム取得項目と対応するデータ属性については、"B.6 システム取得項目のデータ型対応表"を参照してください。
記述形式
<符号なし整数>::=
<数字>…
<負整数>::=
<マイナス符号><数字>…
"表B.39 キーワード一覧"にキーワードの一覧を示します。
【A】 【B】 【C】 【D】 【E】 【F】 【G】 【H】 | 【I】 【J】 【L】 【M】 【N】 【O】
【P】 | 【R】 【S】 【T】 【U】 【V】 【W】 【Y】 【Z】 |