説明
SET_COLUMN_VALUE_BY_INDEX
またはSET_COLUMN_VALUE_BY_NAME
ファンクションでは、データ・レコード全体を操作せず、単一の列値のみを変更します。ユーザー・イグジットの文字セッションが、SET_SESSION_CHARSET
を使用して、オペレーティング・システムのデフォルトのキャラクタ・セット以外の値に設定されている場合、ucharset.h
ファイルのULIB_CS_DEFAULT
で定義されているように、ユーザー・イグジットとプロセス間で交換される文字データは、セッションのキャラクタ・セットで解釈されます。
次に該当する場合、列値はセッションのキャラクタ・セットにのみ設定されます。
列値がSQL文字型(CHAR/VARCHAR2/CLOB
、NCHAR/NVARCHAR2/NCLOB
)、SQL日付/タイムスタンプ/間隔/数値型である。
column_value_mode
インジケータがEXIT_FN_CNVTED_SESS_CHAR_FORMAT
に設定されている。
構文
#include "usrdecs.h" short result_code; column_def column; ERCALLBACK (SET_COLUMN_VALUE_BY_INDEX, &column, &result_code);
バッファ
typedef struct { char *column_value; unsigned short max_value_length; unsigned short actual_value_length; short null_value; short remove_column; short value_truncated; short column_index; char *column_name; /* Version 3 CALLBACK_STRUCT_VERSION */ short column_value_mode; short source_or_target; /* Version 2 CALLBACK_STRUCT_VERSION */ char requesting_before_after_ind; char more_lob_data; /* Version 3 CALLBACK_STRUCT_VERSION */ ULibCharSet column_charset; } column_def;
入力
column_value
新しい列値を表すバッファへのポインタ。
actual_value_length
新しい列値の長さ(バイト)。新しい列値がASCIIフォーマットの場合、実際の長さにNULL終了文字は含めません。
null_value
新しい列値がNULLかどうかを示すフラグ(0
または1
)。null_value
フラグが1
に設定されている場合、データ・レコードの列値はNULLに設定されます。
remove_column
存在する場合に、圧縮更新の列を削除するかどうかを示すフラグ(0
または1
)。圧縮更新とは、すべての列値ではなく、変更された列値のみが記録されるものです。このフラグは、レコードの操作タイプがUPDATE_COMP_SQL_VAL
、PK_UPDATE_SQL_VAL
、またはUPDATE_COMP_ENSCRIBE_VAL
の場合にのみ設定する必要があります。
column_index
データ・レコード・バッファにコピーする新しい列値の列索引。列索引はゼロから開始されます。
column_value_mode
列値のフォーマットを示します。
EXIT_FN_CHAR_FORMAT
ASCIIフォーマット: 値は、NULLで終了しているASCII (またはEBCDIC)文字列です(既知の例外としてサブデータ型UTF16_BEがあり、これはUTF8に変換されます)。
注意: 列値は、ASCII文字列として解釈され、NULLで終了する必要があるため、ユーザー・イグジットに示される際に切り捨てられる可能性があります。最初の0 の値は、文字列の終了文字になります。 |
日付はCCYY-MM-DD HH:MI:SS.FFFFFF
のフォーマットで、時間の端数はデータベースに依存します。
数値は文字列フォーマットです。たとえば、123.45
は'123.45'
として表されます。
出力不可能な文字またはバイナリ値は、16進表記法に変換されます。
浮動小数点型は、有効桁数が最初の14桁までのNULL終了文字列として出力されます。
EXIT_FN_RAW_FORMAT
内部Oracle GoldenGate正規フォーマット: このフォーマットには、適切な場合に、2バイトのNULLインジケータおよび2バイトの変数データ長が含まれます。文字データ型の場合、Oracle GoldenGateではこのフォーマットへのキャラクタ・セットの変換は実行されません。
EXIT_FN_CNVTED_SESS_CHAR_FORMAT
ユーザー・イグジットのキャラクタ・セット: これが適用されるのは、列のデータ型が次の場合のみです。
シングルバイトまたはマルチバイトの文字ベースの型
文字列で表現する数値型
このフォーマットはNULLで終了しません。
source_or_target
ソースまたはターゲット・レコードが変更されるかを示す次の一方。
EXIT_FN_SOURCE_VAL EXIT_FN_TARGET_VAL
requesting_before_after_ind
io_type
がUPDATE_COMP_PK_SQL_VAL
(主キー更新)のレコードの列値を設定するときに設定します。次のいずれかを使用して、主キー更新のどの部分にアクセスするかを指定します。デフォルトはAFTER_IMAGE_VAL
です。
BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL