SQLEXEC-Beispiele mit Parametern

In diesen Beispielen werden Stored Procedures und Abfragen mit Eingabe- und Ausgabeparametern verwendet.

Hinweis: Zusätzliche SQLEXEC-Optionen sind verfügbar, wenn eine Prozedur oder Abfrage Parameter enthält. Siehe SQLEXEC in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.

Beispiel 9-3: SQLEXEC mit einer gespeicherten Prozedur

In diesem Beispiel wird SQLEXEC verwendet, um eine Stored Procedure namens LOOKUP auszuführen, die eine Abfrage ausführt, um eine Beschreibung basierend auf einem Code zurückzugeben. Anschließend werden die Ergebnisse einer Zielspalte mit dem Namen NEWACCT_VAL zugeordnet.

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;

Inhalt der MAP-Anweisung:

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 führt die gespeicherte Prozedur LOOKUP aus. Innerhalb der SQLEXEC-Klausel identifiziert die PARAMS (code_param = account_code)-Anweisung code_param als Prozedurparameter, um die Eingabe aus der Spalte account_code in der Tabelle account zu akzeptieren.

Replicat führt die gespeicherte Prozedur LOOKUP aus, bevor die Spaltenzuordnung ausgeführt wird, sodass die Klausel COLMAP die Ergebnisse extrahieren und der Spalte newacct_val zuordnen kann.

Beispiel 9-4: SQLEXEC mit einer Abfrage

In diesem Beispiel wird dieselbe Logik implementiert wie im vorherigen Beispiel. Es führt jedoch eine SQL-Abfrage anstelle einer Stored Procedure aus und verwendet die Funktion @GETVAL in der Spaltenzuordnung.

Eine Abfrage muss sich in einer Zeile befinden. Um eine Oracle GoldenGate-Parameteranweisung in mehrere Zeilen aufzuteilen, ist ein Et-Zeichen (&) erforderlich.

Oracle AI Database abfragen:

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));

Fragen Sie eine Nicht-Oracle AI Database ab:

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));