파라미터를 사용한 SQLEXEC 예제

이 예제에서는 입력 및 출력 파라미터가 포함된 내장 프로시저와 query를 사용합니다.

주: 프로시저 또는 질의에 매개변수가 포함된 경우 추가 SQLEXEC 옵션을 사용할 수 있습니다. Oracle GoldenGate에 대한 매개변수 및 함수 참조의 SQLEXEC를 참조하십시오.

내장 프로시저가 있는 예제 9-3 SQLEXEC

이 예에서는 SQLEXEC를 사용하여 코드를 기반으로 설명을 반환하는 질의를 수행하는 LOOKUP라는 내장 프로시저를 실행합니다. 그런 다음 결과를 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;

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는 LOOKUP 내장 프로시저를 실행합니다. SQLEXEC 절 내에서 PARAMS (code_param = account_code) 문은 code_param를 account 테이블의 account_code 열에서 입력을 받아들이는 프로시저 매개변수로 식별합니다.

Replicat는 COLMAP 절이 결과를 추출하여 newacct_val 열에 매핑할 수 있도록 열 맵을 실행하기 전에 LOOKUP 내장 프로시저를 실행합니다.

질의가 있는 예제 9-4 SQLEXEC

이 예제는 이전 예제에서 사용된 것과 동일한 논리를 구현하지만 내장 프로시저 대신 SQL 질의를 실행하고 열 맵에서 @GETVAL 함수를 사용합니다.

질의는 한 행에 있어야 합니다. Oracle GoldenGate 매개변수 문을 여러 행으로 분할하려면 앰퍼샌드(&) 행 종료자가 필요합니다.

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

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