@DBFUNCTION

@DBFUNCTIONは、Oracle GoldenGate 23aiで導入された列変換関数です。DML操作の実行時にデータベース内で実行されるデータベース関数への列マッピングを提供します。これは、データベース内のDML操作の適用時間が必要なデータベース・タイムスタンプ、時間が重視される操作またはETLロードを追跡するアプリケーションに役立ちます。データベース関数がデータベース内に存在する必要があり、Replicatユーザーにはそれを実行する権限が必要です。Oracleデータベースの場合、この関数はすべてのReplicatで使用できます。Oracle以外のデータベースの場合、この関数は、クラシック・モードのReplicat、パラレルReplicatおよび調整Replicatで使用できます。

制限事項

  • @DBFUNCTIONで使用されるデータベース関数は、列を引数として許可しません。ただし、静的引数/定数はサポートされています。

    たとえば、次の引数がサポートされています:
    TO_CHAR(SYSTIMESTAMP, 'SSSSS.FF')

    この引数(to_char)を@dbfunctionにマップする場合は、次のように実行できます:

    col1 = @dbfunction('TO_CHAR(SYSTIMESTAMP, ''SSSSS.FF'')')

    @dbfunctionにマップされた文字列に一重引用符'が含まれている場合は、正しく解析されるように''として記述する必要があります。

  • @DBFUNCTIONはキー列にマップできません。

  • @DBFUNCTIONは、次を含む引数として使用できません:
    • FILTERまたはWHERE

    • SQLEXEC

    • その他の列変換関数

    • 別の@DBFUNCTION

次の例は、@DBFUNCTIONを使用して、ORDERS表のシステム・タイムスタンプを判別する方法を示しています。
MAP OE.ORDERS, TARGET OE.ORDERS, COLMAP (USEDEFAULTS, TS = @DBFUNCTION('SYSTIMESTAMP'))