sys.fn_cdc_is_bit_set (Transact-SQL)
透過檢查擷取資料行的序數位置是否設定於提供的位元遮罩內,指出該擷取資料行是否已經更新。
語法
sys.fn_cdc_is_bit_set ( position , update_mask )
引數
position
這是遮罩中要檢查的序數位置。position 是 int。update_mask
這是識別更新資料行的遮罩。update_mask 是 varbinary(128)。
傳回類型
bit
備註
這個函數通常會當做變更資料查詢的一部分使用,以便指出資料行是否已經變更。在此狀況下,sys.fn_cdc_get_column_ordinal 函數會在查詢之前使用,以便取得所需的資料行序數。然後,sys.fn_cdc_is_bit_set 會套用至所傳回之變更資料的每個資料列,並提供資料行專用資訊當做傳回結果集的一部分。
在判斷資料行是否已針對傳回結果集的所有資料列變更時,我們建議您使用這個函數來取代 sys.fn_cdc_has_column_changed 函數。
權限
需要 public 角色中的成員資格。
範例
下列範例會使用 sys.fn_cdc_is_bit_set 搭配預先計算的資料行序數和 __$update_mask 的值做為要呼叫的引數,在 cdc.fn_cdc_get_all_changes_HR_Department 查詢函數所產生的結果集前面加上 'IsGroupNmUpdated' 資料行。
USE AdventureWorks2008R2;
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10), @GroupNm_ordinal int;
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');
SET @to_lsn = sys.fn_cdc_get_max_lsn();
SET @GroupNm_ordinal = sys.fn_cdc_get_column_ordinal('HR_Department','GroupName');
SELECT sys.fn_cdc_is_bit_set(@GroupNm_ordinal,__$update_mask) as 'IsGroupNmUpdated', *
FROM cdc.fn_cdc_get_all_changes_HR_Department( @from_lsn, @to_lsn, 'all')
WHERE __$operation = 4;
GO