主コンテンツへ
Oracle® Fusion Middleware Oracle GoldenGateリファレンスfor Windows and UNIX
12c (12.2.0.1)
E70112-04
目次へ移動
目次

前
次

6.15 GET_COL_METADATA_FROM_INDEX

適用対象

ExtractおよびReplicat

説明

GET_COL_METADATA_FROM_INDEXファンクションでは、該当の列の索引を指定して列メタデータを取得します。

データベース・オブジェクト名は、大/小文字の区別を含め、ホストしているデータベースで定義されているとおりに、正確に返されます。

構文

#include "usrdecs.h"
short result_code;
col_metadata_def column_meta_rec;
ERCALLBACK (GET_COL_METADATA_FROM_INDEX, &column_meta_rec, &result_code);

バッファ

typedef struct
{
  short column_index;
  char *column_name;
  long max_name_length;
  short native_data_type;
  short gg_data_type;
  short gg_sub_data_type;
  short is_nullable;
  short is_part_of_key;
  short key_column_index;
  short length;
  short precision;
  short scale;
  short source_or_target;
} col_metadata_def;

入力

column_index

返される列値の列索引。

max_name_length

返される列名の最大長。通常、最大長は名前のバッファの長さです。返される名前はNULLで終了しているため、最大長は列名の最大長と同じになるはずです。

source_or_target

ソースまたはターゲットのどちらのレコードが圧縮されているかを示す次のいずれか。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

出力

column_name

返される列値の列名。

actual_name_length

返される名前の実際の長さ。

value_truncated

値が切り捨てられたかどうかを示すフラグ(0または1)。切捨ては、列名とNULL終了文字を足した長さが、最大バッファ長を超えるときに行われます。

native_data_type

列の(データベースに)ネイティブなデータ型。プロセスに応じて、次のようにnative_data_typeまたはdd_data_typeが返されます。

  • Extractがソース列に対してコールバック・リクエストを行っている場合は、native_data_typeが返されます。Extractがマップされたターゲット列をリクエストしている場合は、(システム上にターゲット定義があるとみなされ)gg_data_typeが返されます。

  • Extractデータ・ポンプがソース列に対してコールバック・リクエストを行い、ローカル・データベースが存在する場合は、native_data_typeが返されます。データベースがない場合は、(システム上にソース定義ファイルがあるとみなされ)gg_data_typeが返されます。データ・ポンプがターゲット列をリクエストしている場合は、(システム上にターゲット定義が存在するとみなされ)gg_data_typeが返されます。

  • Replicatがソース列に対してコールバック・リクエストを行っている場合は、gg_data_typeが返されます(システム上にソース定義が存在するとみなされます)。Replicatがソース列をリクエストし、パラメータ・ファイルでASSUMETARGETDEFSが使用されている場合は、native_data_typeが返されます。Replicatがターゲット列をリクエストしている場合は、native_data_typeが返されます。

gg_data_type

列のOracle GoldenGateデータ型。

gg_sub_data_type

列のOracle GoldenGateサブデータ型。

is_nullable

列がNULL値を許可するかどうかを示すフラグ(TRUEまたはFALSE)。

is_part_of_key

列がOracle GoldenGateによって使用されているキーの一部かどうかを示すフラグ(TRUEまたはFALSE)。

key_column_index

索引での列の順序を示します。たとえば次の表は、主キーで宣言されている順序とは異なる順序で存在する2つのキー列を持ちます。

CREATE TABLE ABC
(
cust_code        VARCHAR2(4),
name             VARCHAR2(30),
city             VARCHAR2(20),
state            CHAR(2),
PRIMARY KEY (city, cust_code)
USING INDEX
);

論理列順に各列に対してコールバック・ファンクションを実行すると、次が返されます。

  • cust_code1を返します

  • name-1を返します

  • city0を返します

  • state-1を返します

列がキーの一部の場合、返される値はキー内の列の順序です。

列がキーの一部ではない場合は、値-1が返されます。

length

列の長さを返します。

precision

数値データ型の場合、列の精度を返します。

scale

数値データ型の場合、位取りを返します。

返される値

EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_EXCEEDED_MAX_LENGTH
EXIT_FN_RET_INVALID_COLUMN
EXIT_FN_RET_OK