説明
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つはエスケープ文字として使用します。 |
サポートされません。 |