SET @COLUMNNAMES_HIST= ( SELECT STRING_AGG( COLUMN_NAME, ' ,') COLUMN_NAMES FROM INFORMATION_SCHEMA.COLUMNS WHERE UPPER(TABLE_SCHEMA) = '@SCHEMANAME' AND UPPER(TABLE_NAME) = '@TABLE_HIST';
SET @MERGESQL = 'MERGE ' + @TABLE_HIST + ' USING #FINAL_TEMP_CPY SRC
ON (TGT.@PRIMARYKEY = SRC.@PRIMARYKEY AND TGT.UPDATE_TIMESTAMP = SRC.UPDATE_TIMESTAMP)
WHEN NOT MATCHED BY TARGET
THEN INSERT
(
@COLUMNNAMES_HIST -- Column list
)
(
SELECT *, GETTIMESTAMP(), GETTIMESTAMP() FROM FINAL_TEMP_CPY;
)'
最初に TABLE_HIST からすべての列を変数にフェッチし、それを INSERT ステートメントで使用しています。それでいいですか?そして、値では、ソーステーブルからすべての値をフェッチし、TABLE_HIST の他の 2 つの列のタイムスタンプを同時に取得しています。これはうまくいくと思いますか?