@DBFUNCTION
@DBFUNCTION 是 Oracle GoldenGate 26ai 中引入的列转换函数。它提供到数据库函数的列映射,该函数在执行 DML 操作时在数据库中执行。这对于正在跟踪数据库时间戳、时间敏感操作或 ETL 加载的应用程序非常有用,这些应用程序需要数据库内 DML 操作的“应用时间”。数据库函数必须存在于数据库中,并且复制用户必须具有执行该函数的权限。对于 Oracle AI Database,此功能可用于所有复制。对于非 Oracle 数据库,此功能可用于经典模式、并行复制和协调复制的复制。
另请参见 Native Database Embedding with @DBFUNCTION
限制
-
@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'))