説明
USEANSISQLQUOTES
およびNOANSISQLQUOTES
パラメータでは、Oracle GoldenGateが一重または二重引用符で囲まれる列名とリテラルを扱う方法を制御します。
注意: 表名などのオブジェクト名をキャプチャおよびマッピングする場合、USEANSISQLQUOTES とNOUSEANSISQLQUOTES のどちらが指定されているかにかかわらず、Oracle GoldenGateは常に、二重引用符で囲んだ文字列を大/小文字を区別するオブジェクト名として認識します。 |
USEANSISQLQUOTES
は、Oracle GoldenGateのデフォルトの動作です。Oracle GoldenGateに、引用符の使用についてSQL-92ルールに従うように指示します。USEANSISQLQUOTES
が有効になっている場合、Oracle GoldenGateでは、二重引用符で囲んだ文字列は大/小文字を区別する列名として扱われ、一重引用符で囲んだ文字列はリテラルとして扱われます。たとえば、文字列長を返す@STRLEN
変換ファンクションの動作を考えてみます。デフォルトでは、Oracle GoldenGateは二重引用符で囲まれた"ABC"
を大文字の列名として解釈するため、@STRLEN
は、列"ABC"がどのような値
でも、その長さを返します。
COLMAP ( TGT1 = @STRLEN("ABC") )
前の例で二重引用符が一重引用符に変更された場合、Oracle GoldenGateは'ABC'
をリテラルとして解釈するため、@STRLEN
は3
を返します。
COLMAP ( TGT1 = @STRLEN('ABC') )
NOUSEANSISQLQUOTES
は、バージョン12cより前のOracle GoldenGateバージョン(二重引用符内の文字列がリテラルで、(引用符で囲まれているかどうかにかかわらず)大/小文字を区別する列名がサポートされていない)のパラメータ・ファイルとの下位互換性を目的としています。たとえば、文字列長を返す@STRLEN
変換ファンクションの動作を考えてみます。NOUSEANSISQLQUOTES
では、Oracle GoldenGateは二重引用符で囲まれた"ABC"
をリテラルとして解釈するため、次の@STRLEN
指定は値3
を返します。
COLMAP ( TGT1 = @STRLEN("ABC") )
使用すると、NOUSEANSISQLQUOTES
は、ローカルOracle GoldenGateインスタンス内のすべてのTABLE
およびMAP
文に影響します。
例
次のマトリックスは、USEANSIISQLQUOTES
とNOUSEANSISQLQUOTES
のデフォルト間の入力変数に関連する引用符の使用の違いを示します。
次のマトリックスは、リテラル入力の一部であるリテラルの一重引用符または二重引用符をエスケープする方法を示します。
表3-37 リテラル引用符のエスケープ
入力変数 | USEANSISQLQUOTES | NOUSEANSISQLQUOTES |
---|---|---|
リテラル・テキスト:
|
この例では、2つのアポストロフィを使用します。1つはリテラルのアポストロフィとして使用し、もう1つはエスケープ文字として使用します。(アポストロフィは、一重引用符と同じ文字です。) |
エスケープ文字は不要です。 |
リテラル・テキスト:
|
エスケープ文字は不要です。 |
この例では、2つの二重引用符を使用します。1つはリテラルの二重引用符として使用し、もう1つはエスケープ文字として使用します。 |
列名: "Column"1 |
この例では、2つの二重引用符を使用します。1つはリテラルの二重引用符として使用し、もう1つはエスケープ文字として使用します。 |
サポートされません。 |