Ejemplos de SQLEXEC que utilizan parámetros

Estos ejemplos utilizan procedimientos y consultas almacenados con parámetros de entrada y salida.

Nota: Hay disponibles opciones SQLEXEC adicionales para su uso cuando un procedimiento o una consulta incluye parámetros. Consulte SQLEXEC en la Referencia de parámetros y funciones para Oracle GoldenGate.

Ejemplo 9-3 SQLEXEC con un procedimiento almacenado

En este ejemplo se utiliza SQLEXEC para ejecutar un procedimiento almacenado denominado LOOKUP que realiza una consulta para devolver una descripción basada en un código. A continuación, asigna los resultados a una columna de destino denominada NEWACCT_VAL.

CREATE OR REPLACE PROCEDURE LOOKUP
(CODE_PARAM IN VARCHAR2, DESC_PARAM OUT VARCHAR2)
BEGIN
    SELECT DESC_COL
    INTO DESC_PARAM
    FROM LOOKUP_TABLE
    WHERE CODE_COL = CODE_PARAM
END;

Contenido de la sentencia MAP:

MAP sales.account, TARGET sales.newacct, &
  SQLEXEC (SPNAME lookup, PARAMS (code_param = account_code)), &
    COLMAP (newacct_id = account_id, newacct_val = lookup.desc_param);

SQLEXEC ejecuta el procedimiento almacenado LOOKUP. En la cláusula SQLEXEC, la sentencia PARAMS (code_param = account_code) identifica code_param como el parámetro de procedimiento para aceptar la entrada de la columna account_code en la tabla account.

Replicat ejecuta el procedimiento almacenado LOOKUP antes de ejecutar la asignación de columnas, de modo que la cláusula COLMAP pueda extraer y asignar los resultados a la columna newacct_val.

Ejemplo 9-4 SQLEXEC con una consulta

En este ejemplo se implementa la misma lógica que se utilizó en el ejemplo anterior, pero se ejecuta una consulta SQL en lugar de un procedimiento almacenado y se utiliza la función @GETVAL en el mapa de columnas.

Una consulta debe estar en una línea. Para dividir una sentencia de parámetro de Oracle GoldenGate en varias líneas, se necesita un terminador de línea ampersand (&).

Consulta de Oracle AI Database:

MAP sales.account, TARGET sales.newacct, &
SQLEXEC (ID lookup, &
QUERY 'select desc_col desc_param from lookup_table where code_col = :code_param', &
PARAMS (code_param = account_code)), &
COLMAP (newacct_id = account_id, newacct_val = &
@getval (lookup.desc_param));

Consulta para una base de datos que no sea de Oracle AI Database:

MAP sales.account, TARGET sales.newacct, &
SQLEXEC (ID lookup, &
QUERY 'select desc_col desc_param from lookup_table where code_col = ?', &
PARAMS (p1 = account_code)), &
COLMAP (newacct_id = account_id, newacct_val = &
@getval (lookup.desc_param));